unity - 二进制文件操作-存储与读取
来源:互联网 发布:asp.net php学那个好 编辑:程序博客网 时间:2024/06/07 01:21
目标:实现数据存储为二进制文件,然后通过二进制文件解析数据。
目标分为三个阶段:1、将数据结构转化为二进制(至于数据是怎样读取进来的这个就不说了,因为方式比较多,但是读取进来一定都会以特定的数据结构形式来保存)。2、加载二进制文本。3、加载为对应的数据结构。
阶段一:将数据结构转化为二进制有两种方式:1:利用C#的BinaryWrite,2:使用函数把数据转化成byte数组,然后在写入。
方法1:
public bool SaveBinaryFile(string _path, string _name, TextAsset t){string content = t.text;//二进制文件流信息BinaryWriter bw = new BinaryWriter(new FileStream (_path + _name, FileMode.Create));;FileStream fs = new FileStream (_path + _name, FileMode.Create);try {bw = new BinaryWriter(new FileStream (_path + _name, FileMode.Create));}catch(IOException e){Debug.Log (e.Message);}try {bw.Write(content);}catch(IOException e){Debug.Log (e.Message);}debugInfo += "文件创建成功!\n";return true;}说明:这种方法代码也没几行,方式也很好理解,我把过程封装成函数,传入路径和文件名即可(温馨提示:unity里面二进制存在StreamingAssets文件夹里面,若不懂可百度,有很多资源)。
为了让大家更好的理解我把路径贴出来:
private string name = "1.bytes";public static readonly string path = Application.streamingAssetsPath + "/";
方法2:
string path = Application.streamingAssetsPath + "/";string name = "2.bytes";int a = 15;byte[] b = BitConverter.GetBytes (a);File.WriteAllBytes (path + name, b);说明:这种方法简单方便,利用System.Text下的BitConverter将其他类型的转化为二进制类型[特殊:不包括String类型的转化,string转化用Encoding.UTF8.GetBytes即可]。
这样阶段一就完成了。
阶段二:
加载二进制文本采用www加载,目前我知道唯一简单方便的加载方式,如果有更好的加载方式还请指教。
用www加载需要用到协程,如果对协程不是很懂的同学请自行查询(记得以前写过一篇但是没找到,有时间也会整理一篇)。下面是加载代码。
IEnumerator wwwLoad(string _path, Action<byte[]> action){#if UNITY_EDITOR || UNITY_IOS_path = "file://" + _path;#endifWWW www = new WWW (_path);yield return www;action (www.bytes);}
注意点:下载的路径有所变化,详细了解可以去看看Unity的平台路径,因为与本文无关,不多说了。这里我用了回调,只是习惯,当然也可以等WWW下载完成后自行调用其他函数。
阶段三:使用BinaryReader类解析二进制文件
public void readByte(byte[] b){using (BinaryReader br = new BinaryReader(new MemoryStream(b))){int f = br.ReadInt32 ();Debug.Log (f);}}只需要使用使BinaryReader类中的函数来读取对一个类型的数据就可以了。
至此,任务完成。
0 0
- unity - 二进制文件操作-存储与读取
- 二进制文件操作-存储与读取
- JDBC-二进制文件的存储与读取
- unity中的TXT存储与读取
- matlab写入二进制文件与C语言读取二进制文件
- unity文件存储和读取
- C++与c#读取二进制文件对比
- 【总结】文本文件与二进制文件读取的区别
- 读取二进制文件
- 读取二进制文件
- 读取二进制文件
- 二进制文件读取
- C# 向数据中存储和读取二进制文件!!
- 如何读取以BIFF格式存储的 Excel 二进制文件
- C++读取存储float文件(txt文件和二进制文件)
- php操作大缓存的存储与读取
- php操作大缓存的存储与读取
- ~~~二进制文件操作~~~
- 抽象类(abstract class)与接口(interface)的异同
- Linux常用命令学习总结(一)
- LeetCode 7. Reverse Integer
- HBase操作(Shell与Java API)
- HTML5新特性结合PHP实现多图片格式转换功能 欢迎讨论
- unity - 二进制文件操作-存储与读取
- java工程如何打jar包和war包
- [CSU 1804 有向无环图] DP+拓扑排序
- Android databinding笔记
- 红黑树和AVL树的效率对比
- 无向图的深度优先生成森
- Request对象的主要方法:
- 1036. Boys vs Girls (25)
- mysql千万级数据表结构修改