我有一个Unity游戏,我试图部署在Android设备上。我试图使用XML文件在设备上存储信息,但问题是,当游戏在任何Android设备上时,它无法正确找到XML文件路径。android上的Unity游戏无法找到或读取XML文件
为了阅读它,我使用了XML序列化程序(http://wiki.unity3d.com/index.php?title=Saving_and_Loading_Data:_XmlSerializer),我只想知道是否有任何需要执行的操作才能获取XML文件的实际文件路径。
我试过使用流媒体资产方法,所以我有一个文件夹叫流媒体资源与我想读取的XML文件。我尝试使用这个代码,试图访问它(我的ItemContainer的工作方式为MonsterContainer相同):
string path;
ItemContainer itemCollection;
if (Application.platform == RuntimePlatform.Android) {
path = "file://" + Application.streamingAssetsPath + "!/assets/" + _xmlFile.name + ".xml";
} else {
path = Application.dataPath + "/StreamingAssets/" + _xmlFile.name + ".xml";
itemCollection = ItemContainer.Load(path);
}
然而这并没有在Android上工作,但我的Windows桌面上所做的工作。然后我看到了WWW也许能用来查找文件,但同样没有奏效:
string path;
ItemContainer itemCollection;
if (Application.platform == RuntimePlatform.Android) {
path = "jar:file://" + Application.dataPath + "!/assets/" + _xmlFile.name;
WWW data = new WWW(path);
StartCoroutine(MyRead(data));
itemCollection = ItemContainer.Load(data.text);
}
else {
path = Application.dataPath + "/StreamingAssets/" + _xmlFile.name + ".xml";
itemCollection = ItemContainer.Load(path);
}
是否有遗漏或任何我为了访问XML文件做错了在Android设备上?
[编辑] 我发现这是使枚举没有所以我重做程序如何访问文件了一点,所以它更符合哪一些建议,在
已经暗示工作的一个小问题private void XMLSerializerLoad()
{
string path;
path = Application.streamingAssetsPath + "/assets/" + _xmlFile.name + ".xml";
StartCoroutine(MyRead(path));
}
IEnumerator MyRead(string path)
{
ItemContainer _items;
WWW www = new WWW(path);
yield return www;
_items = ItemContainer.LoadFromText(www.text);
_spelling_words = new List<Item>(); //Setting to an empty list
_spelling_words = _items._items;
}
但是当我运行此我得到:
XmlException:文档没有出现。 1个线位置1
Mono.Xml2.XmlTextReader.Read()
不幸的是,你所建议的不起作用。我为android部署构建我的游戏,并且当我按下应该运行使用从XML文件 –
中获取的信息的方法的按钮时,它无法执行我想要的操作,如果我尝试制作快速项目旨在说明我的问题,而不是描述发生了什么问题? –
流媒体资产文件夹不是真的用于保存东西。使用Application.dataPath + _xmlFilename.xml进行保存。你确定该文件存在吗?也许你还没有创建它,你试图打开它阅读。考虑检查它的存在 – BlackBrain