android上的Unity游戏无法查找或读取XML文件

时间:2015-10-16 11:25:25

标签: c# android xml unity3d

我在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()

1 个答案:

答案 0 :(得分:0)

Android中的Application.streamingAssetsPath已经包含了file://所以你需要在android中省略它才能使它工作。

  path = Application.streamingAssetsPath + "!/assets/" +   _xmlFile.name + ".xml";

Application.dataPath也是如此,你不需要添加file://或jar:file://

我不明白什么!是的,在“!/ assets /”中可能也是一个问题