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

首先要说一下,这里的文件本地存储,不是指的通过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 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 DeserializeMethod(string filePath)     // 二进制反序列化
    
    {
        
         fs = new FileStream (filePath, FileMode.Open,FileAccess.Read);
        
        BinaryFormatter bf = new BinaryFormatter ();
        
        List list = bf.Deserialize (fs) as List;
        
        fs.Close ();
        return list;
    }

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

你可能感兴趣的:(unity 文件本地存储-BinaryFormatter序列化)