关于Unity的几种XML读取方式
2016-04-10 19:29
232 查看
最近在用Unity做手机游戏,其中关卡解锁信息需要用xml保存
那么问题就来了,Unity有多种路径操作的方法,但是对于移动端,有的方法只能读不能写……
于是我去上网查了点资料
(参考资料:http://www.manew.com/forum.php?mod=viewthread&tid=21404&extra=page%3D1%26filter%3Dtypeid%26typeid%3D143)
第一种——Resources.Load
这种方式是笔者首先想到的方法,想要用这个方法,需要把xml文件放在Assest\Resources文件夹下,然后通过Resources.Load(文件名)的方式来读取。
例:比如我在Asset\Resources下有个GateInfo.xml的文件。那么想要读取这个文件,只要Resources.Load("GateInfo");即可读取。
PS:不要加后缀名!不要加后缀名!不要加后缀名!因为很重要所以说三次
但是这种方式在编辑器的情况下可以对文件进行“增删改查”,但是在Build之后,就只能执行“查”(也就是读)的操作了……
第二种——Application.persistentDataPath
这是笔者最后决定使用的方法,这种方法的优点是可以在移动上执行读写操作,关于存储位置如下:
Windows : C:\Users\Dorameon\AppData\LocalLow\Doraking 其中Doraemon是笔者的电脑用户名,Doraking为项目名
Android: /data/data/com.Doraking.Mission/files: 其中com.Doraking.Mission为你build时所设定的Bundle Identifier
IOS :Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents(PS:笔者没有IOS设备,没办法实测,于是从参考资料里复制了下来)
例:
PS:这个和Resources.Load不一样,是获取文件路径,要加后缀名!
第三种——Application.dataPath
这种方法可以把xml文件直接放在根路径下直接读取,但是根据笔者查阅的资料,发现这种方式在移动端没有对应的读写权限╮( ̄▽ ̄")╭
但是这种方法有一种改进措施。那么就是把xml文件放在Assest\StreamingAssets下,然后通过Application.streamingAssetsPath读取
这样在移动端上可以执行读的操作了~
操作方法和第二种方法类似,这里笔者就不再重复描述了
那么问题就来了,Unity有多种路径操作的方法,但是对于移动端,有的方法只能读不能写……
于是我去上网查了点资料
(参考资料:http://www.manew.com/forum.php?mod=viewthread&tid=21404&extra=page%3D1%26filter%3Dtypeid%26typeid%3D143)
第一种——Resources.Load
这种方式是笔者首先想到的方法,想要用这个方法,需要把xml文件放在Assest\Resources文件夹下,然后通过Resources.Load(文件名)的方式来读取。
例:比如我在Asset\Resources下有个GateInfo.xml的文件。那么想要读取这个文件,只要Resources.Load("GateInfo");即可读取。
PS:不要加后缀名!不要加后缀名!不要加后缀名!因为很重要所以说三次
但是这种方式在编辑器的情况下可以对文件进行“增删改查”,但是在Build之后,就只能执行“查”(也就是读)的操作了……
第二种——Application.persistentDataPath
这是笔者最后决定使用的方法,这种方法的优点是可以在移动上执行读写操作,关于存储位置如下:
Windows : C:\Users\Dorameon\AppData\LocalLow\Doraking 其中Doraemon是笔者的电脑用户名,Doraking为项目名
Android: /data/data/com.Doraking.Mission/files: 其中com.Doraking.Mission为你build时所设定的Bundle Identifier
IOS :Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents(PS:笔者没有IOS设备,没办法实测,于是从参考资料里复制了下来)
例:
SavePath = Application.persistentDataPath + "//GateInfo.xml"; XmlDocument GateInfoDoc = new XmlDocument(); GateInfoDoc.Load(SavePath); GateInfoDoc.Save(SavePath);
PS:这个和Resources.Load不一样,是获取文件路径,要加后缀名!
第三种——Application.dataPath
这种方法可以把xml文件直接放在根路径下直接读取,但是根据笔者查阅的资料,发现这种方式在移动端没有对应的读写权限╮( ̄▽ ̄")╭
但是这种方法有一种改进措施。那么就是把xml文件放在Assest\StreamingAssets下,然后通过Application.streamingAssetsPath读取
这样在移动端上可以执行读的操作了~
操作方法和第二种方法类似,这里笔者就不再重复描述了
相关文章推荐
- Unity3d--随机数Random.rotation
- Unity3d--timeScale的使用方法
- Unity Shader 一 激光特效Shader
- Unity的UI文档
- Unity3d之手机代码跟新策略探讨
- Unity3d之手游资源热跟新资源探讨
- Unity3d之资源打包Assetbundle
- Unity3D学习笔记(一)接入百度移动广告(Android详细讲解)
- Unity3d之角色控制器
- Unity UGUI图文混排源码(二)
- Unity UGUI图文混排源码(二)
- Unity UGUI图文混排源码(一)
- Unity UGUI图文混排源码(一)
- Unity中Microphone类进行录音保存
- Unity光照图UV显示
- 【Unity】4.4 添加角色控制器
- 【Unity】4.3 地形编辑器
- A* Pathfinding Project (Unity A*寻路插件) 使用教程
- Visual Studio 2015 Community连接到Mysql
- Unity3D 学习笔记7 —— 获取热更新资源文件的MD5码