美文网首页
unity 文件本地存储-BinaryFormatter序列化

unity 文件本地存储-BinaryFormatter序列化

作者: 毛毛_1e13 | 来源:发表于2020-03-01 19:29 被阅读0次

    首先要说一下,这里的文件本地存储,不是指的通过http请求数据,存储到本地,(当然也可以用做本地存储数据,只是我的业务场景不是)而是app一开始一些配置的文件或者别的什么文件,是一开始 就要在app内的数据,比如我这次是做一个动物的app介绍各种动物 ,我需要一开始需要把每种动物名称 简介等信息放在app里面的,其实就是单机版,方法有很多 也可以用数据库。我这里用的是序列化成二进制文件,放在里面,用的时候在反序列化提取。

    1.建立数据model如下 要可以序列化 必须添加 serializable 表面konglonginfo 可以被序列化

    public class ItemModel : MonoBehaviour
    {
        [Serializable]
        public class konglongInfo
        {
            public string kL_Info;
        
            public string kL_Name;
        
            public string kL_SoundName;
        }
        
    
        }
    }
    

    2.数据序列化 我这里写了一个静态方法,传入两个参数 一个是ItemModle.konglongInfo的list 多个记录,另一个参数是序列化后文件保存路径。

    public  static void SerializeMethod(List<ItemModel.konglongInfo> listKl,string filePath)   // 二进制序列化
        {
            FileStream fs = new FileStream (filePath, FileMode.Create);
            BinaryFormatter bf = new BinaryFormatter ();
            bf.Serialize (fs, listKl);
            
            fs.Close ();
        }
    

    3.文件反序列化,也是一个静态方法,参数传入二进制文件路径,返回值为哦一个list 供业务中直接使用。

    public static List<ItemModel.konglongInfo> DeserializeMethod(string filePath)     // 二进制反序列化
        
        {
            
             fs = new FileStream (filePath, FileMode.Open,FileAccess.Read);
            
            BinaryFormatter bf = new BinaryFormatter ();
            
            List<ItemModel.konglongInfo> list = bf.Deserialize (fs) as List<ItemModel.konglongInfo>;
            
            fs.Close ();
            return list;
        }
    

    最后说一下为什么没用sqlite3,其实一开始用的是数据库,因为unity直接输出apk,发现android 缺少sqlite的库,需要在unity工程/Assets/Plugins里面放入三个文件(Mono.Data,Mono.Data.Sqlite,sqlite3) 由于自己还是菜鸟,我找了几个放进去都不能正常用,有的说是版本问题,有的说是别的问题,最后就算了,改用序列化一样。不牵扯这个问题,所有平台都能很好使用。(关于使用sqlite的问题希望大神能给指导指导)。

    相关文章

      网友评论

          本文标题:unity 文件本地存储-BinaryFormatter序列化

          本文链接:https://www.haomeiwen.com/subject/hoyhkhtx.html