unity 常见问题

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("存档文件不存在");
        }
    }

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值