我在Unity中制作了一款游戏,我正试图在Android设备上进行部署。我正在尝试使用XML文件在设备上存储信息,但问题是,当游戏在任何Android设备上时,它无法正确找到XML文件路径。
为了阅读它我正在使用XML序列化程序(http://wiki.unity3d.com/index.php?title=Saving_and_Loading_Data:_XmlSerializer),我只是想知道为了获得XML文件的实际文件路径,我是否需要做任何事情。 / p>
我尝试过使用流媒体资源方法,因此我有一个名为流媒体资源的文件夹,其中包含我要阅读的XML文件。我尝试使用此代码尝试访问它(My 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);
}
为了访问Android设备上的XML文件,是否有任何遗漏或任何错误?
[编辑] 我发现了一个小问题,使得枚举器无法工作,所以我重新编写了程序如何访问文件,以便它更符合一些建议暗示的内容
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()
答案 0 :(得分:0)
path = Application.streamingAssetsPath + "!/assets/" + _xmlFile.name + ".xml";
Application.dataPath也是如此,你不需要添加file://或jar:file://
我不明白什么!是的,在“!/ assets /”中可能也是一个问题