PS:首先感谢给我带来帮助信息的各位博主。尊重原创收藏以温故。文末附上原参考链接以及示例工程
一:了解Unity资源加载的方式
1:Resources文件夹
只读,不能动态修改,打包发布时包含目录下所有内容。资源加载方式如Resources.Load(预制名)等
需要进行写操作的文件不要存放到这里,如存储游戏数据
2:StreamingAssets文件夹
虚拟目录,PC平台读取正常,打包发布后时会被压缩加密,只能进行WWW读取。主要存放二进制文件和如视频文件等
PC读取路径:filepath = "file://"+ Application.streamingAssetsPath+“/my.xml”
例:
IEnumerator LoadXML()
{
string sPath= "file://"+Application.streamingAssetsPath + "/my.xml";
WWW www = new WWW(sPath);
yield return www;
_result = www.text;//XML表数据
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(www.text);
XmlNodeList nodeList = xmlDoc.SelectSingleNode("gameObjects").ChildNodes;
foreach (XmlElement scene in nodeList)
{
}
}
Android读取路径:filepath ="jar:file://"+Application.dataPath+ "!/assets"+"/my.xml";
方法同上
3:AssetBundle (可参考上一篇文章)
Unity定义的一种二进制文件,包体较小。如打包预制、场景等,读取方式WWW
关于移动端脚本更新的问题已不是问题,本地工程包含脚本即可。
打包发布后大版本如1.0主要更新脚本内容,小版本如1.0.1主要更新资源如场景模型等,都是通过服务器对比版本下载更新。若大版本已发布则优先用户强制更新大版本
4:永久/临时路径PersistentDataPath
内容可读写,不过是运行时才可写入或读取,所以提前存入数据是不可行的。例如本人参考示例工程打包场景数据写入XML然后存入永久路径,这些都是在编辑模式下进行的。
正在准备实现将玩家数据等重要信息封装到XML中保存到该永久路径
例:
XmlDocument xmlDoc = new XmlDocument();
...
xmlDoc.Save(Application.persistentDataPath+"//abc.xml");
读:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Application.persistentDataPath+"//abc.xml");
二:将场景信息封装到XML/JSON/Binary数据文件中,以实现动态加载
原参考工程链接已分享在下面,主要实现的是PC端
本文修改后的工程也分享在下面,PC端和移动端都可运行(心得体会记录在readme.text中)
三:在不同平台下的资源路径同步和总结
if(Application.platform==RuntimePlatform.Android)
localPath = Application.streamingAssetsPath+"/score.xml"; //在Android中实例化WWW不能在路径前面加"file://"
else
localPath = "file://"+UnityEngine.Application.streamingAssetsPath + "/score.xml";//在Windows中实例化WWW必须要在路径前面加"file://"
WWW www = new WWW(localPath);
while (!www.isDone)
{
yield return www;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(www.text); //也可以使用Load(localPath)只适用PC平台
XmlNodeList nodeList=xmlDoc.SelectSingleNode("rank").ChildNodes;
foreach(XmlElement xe in nodeList)
{
} }
IOS和PC平台读取方法一致 string filepath = Application.dataPath +"/StreamingAssets"+"/json.txt";
本文工程:https://pan.baidu.com/s/1i4LsgSH
原参考工程:https://pan.baidu.com/s/1gfzrNEj
参考链接:
1:[雨松MOMO] Unity3D研究院之将场景导出XML或JSON或二进制并且解析还原场景(四十二)
http://www.manew.com/thread-21417-1-1.html
2:[雨松MOMO] Unity3D之Android同步方法读取streamingAssets(八十八)
http://www.manew.com/thread-89202-1-1.html
3:Unity3D移动平台动态读取外部文件全解析 http://www.cnblogs.com/murongxiaopifu/p/4199541.html
4: unity Android 打包后读取 xml 文件 https://www.tuicool.com/articles/BZrQzi
5:unity 在移动平台中,文件操作路径详解 http://www.cnblogs.com/wonderKK/p/3969284.html
9:Unity3d新网络请求方式UnityWebRequest详解 http://gad.qq.com/article/detail/34139%20target=
如有疑问之处,欢迎指正和探讨。