1. 'ParticleSystem.startSize' is obsolete:
改为:
ParticleSystem m_System = GetComponent<ParticleSystem>();
ParticleSystem.MainModule main = m_System.main;
main.startSizeMultiplier = 5;
2. unity 转 byte 数组方法:
public static byte[] AuthGetFileData(string fileUrl)
{
FileStream fs = new FileStream(fileUrl, FileMode.Open, FileAccess.Read);
byte[] buffur = new byte[fs.Length];
fs.Read(buffur, 0, buffur.Length);
fs.Close();
return buffur;
}
3. 类 转成 xml序列化:
通过为类添加序列化标签:
// 需要序列化的类
using System.Xml.Serialization;
[System.Serializable]
public class XmlSerilier
{
[XmlAttribute("Id")]
public int Id { get; set; }
[XmlAttribute("Name")]
public string Name { get; set; }
[XmlElement("List")]
public List<int> List { get; set; }
}
// 序列化方法
private void xmlserilizedTest()
{
XmlSerilier xml = new XmlSerilier();
xml.Id = 123456;
xml.Name = "learn";
xml.List = new List<int> {12,15 };
xmlserilized(xml);
}
private void xmlserilized(XmlSerilier xm)
{
FileStream filestream = new FileStream(Application.dataPath + "/MyLearn.xml", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
StreamWriter fsWriter = new StreamWriter(filestream, System.Text.Encoding.UTF8);
XmlSerializer lized = new XmlSerializer(xm.GetType());
lized.Serialize(filestream, xm);
fsWriter.Close();
filestream.Close();
}
// 反序列化
void XmlDeserilize()
{
FileStream fs = new FileStream(Application.dataPath + "/test.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
XmlSerializer xml = new XmlSerializer(typeof(XmlSerilier));
XmlSerilier serilier = (XmlSerilier)xml.Deserialize(fs);
fs.Close();
}
4. 数据二进制化
void BinarySerialize(XmlSerilier serilize)
{
FileStream fs = new FileStream(Application.dataPath + "/test.bytes", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
BinaryFormatter bfm = new BinaryFormatter();
bfm.Serialize(fs, serilize);
fs.Close();
}
// 反序列化
void BinaryDeserialize()
{
TextAsset ta = UnityEditor.AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/test.bytes");
MemoryStream ms = new MemoryStream(ta.bytes);
BinaryFormatter bf = new BinaryFormatter();
XmlSerilier serilize = (XmlSerilier)bf.Deserialize(ms);
ms.Close();
}
5 JSON
using LitJson;
private void SaveByJson()
{
Save save = CreateSaveGO();
string filePath = Application.dataPath + "/StreamingFile" + "/byJson.json";
//利用JsonMapper将save对象转换为Json格式的字符串
string saveJsonStr = JsonMapper.ToJson(save);
//将这个字符串写入到文件中
//创建一个StreamWriter,并将字符串写入文件中
StreamWriter sw = new StreamWriter(filePath);
sw.Write(saveJsonStr);
//关闭StreamWriter
sw.Close();
UIManager._instance.ShowMessage("保存成功");
}
// 读取
private void LoadByJson()
{
string filePath = Application.dataPath + "/StreamingFile" + "/byJson.json";
if(File.Exists(filePath))
{
//创建一个StreamReader,用来读取流
StreamReader sr = new StreamReader(filePath);
//将读取到的流赋值给jsonStr
string jsonStr = sr.ReadToEnd();
//关闭
sr.Close();
//将字符串jsonStr转换为Save对象
Save save = JsonMapper.ToObject<Save>(jsonStr);
SetGame(save);
UIManager._instance.ShowMessage("");
}
else
{
UIManager._instance.ShowMessage("存档文件不存在");
}
}