Unity3D之文件读写文件
2015-07-23 01:30
435 查看
为了完成资源的读取和保存,这里做了好多的实验,也参考了很多的文章和帖子,这里十分感谢雨松的网站,很多时候都能在那里找到思路和相应的回答。希望这个网站能一直办下去。
开始正文,为了完成上述功能,自己本地做了很多实验,为了统一资源版本,我想到的办法就是把所有的AssetsBundle文件都保存到unity的沙盒目录下,即Application.persistentDataPath这个目录下。从StreamingAssetsPath目录将文件拷贝出来就成了一个问题,由于StreamingAssetsPath这个的只读属性,能使用的办法只有一个,用www把目录中的2进制文件先加载进来,再把获取到的资源使用Stream的方式将文件写到persistentDataPath目录下。用了两天,查阅了大量的文章及回复,揪掉了好多头发才把这个问题搞定。这里只写具体遇到的问题,代码的话就不方便上传了。
几个点需要注意到:
1、从StreamingAssetsPath读取的时候只能使用WWW的方式,这就限定了读取时只能使用协同方法(4.5.2以下版本,这个版本号以上的unity暂时没有研究过)。
2、在Android真机上读取的时候需要注意读取文件的路径,网上有很多解释,这里就不写了。
3、写文件的时候千万不要把写文件的操作也放到WWW读取的协同方法里。否则很容易写文件的操作会执行的不成功,虽然不报错,文件也能创建,但是文件是空的。
以上就是这两天的深刻体会。因为要做成管理器,所以这部分代码写的很痛苦,逻辑组织起来也比较讨厌,尤其在真机上测试的时候简直就是灾难。
还有个建议。一定要事先写一个简单的日志输出类,可以用网上的输出到屏幕的插件,但是那个插件的缺点就是回溯过程的时候会稍微费劲点。而且不利于保护逻辑有bug时的现场记录。
开始正文,为了完成上述功能,自己本地做了很多实验,为了统一资源版本,我想到的办法就是把所有的AssetsBundle文件都保存到unity的沙盒目录下,即Application.persistentDataPath这个目录下。从StreamingAssetsPath目录将文件拷贝出来就成了一个问题,由于StreamingAssetsPath这个的只读属性,能使用的办法只有一个,用www把目录中的2进制文件先加载进来,再把获取到的资源使用Stream的方式将文件写到persistentDataPath目录下。用了两天,查阅了大量的文章及回复,揪掉了好多头发才把这个问题搞定。这里只写具体遇到的问题,代码的话就不方便上传了。
几个点需要注意到:
1、从StreamingAssetsPath读取的时候只能使用WWW的方式,这就限定了读取时只能使用协同方法(4.5.2以下版本,这个版本号以上的unity暂时没有研究过)。
2、在Android真机上读取的时候需要注意读取文件的路径,网上有很多解释,这里就不写了。
3、写文件的时候千万不要把写文件的操作也放到WWW读取的协同方法里。否则很容易写文件的操作会执行的不成功,虽然不报错,文件也能创建,但是文件是空的。
以上就是这两天的深刻体会。因为要做成管理器,所以这部分代码写的很痛苦,逻辑组织起来也比较讨厌,尤其在真机上测试的时候简直就是灾难。
还有个建议。一定要事先写一个简单的日志输出类,可以用网上的输出到屏幕的插件,但是那个插件的缺点就是回溯过程的时候会稍微费劲点。而且不利于保护逻辑有bug时的现场记录。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories