C# android上的Unity游戏无法找到或读取XML文件

C# android上的Unity游戏无法找到或读取XML文件,c#,android,xml,unity3d,C#,Android,Xml,Unity3d,我有一款Unity制作的游戏,我正试图将其部署在Android设备上。我试图使用XML文件在设备上存储信息,但问题是,当游戏在任何Android设备上时,它无法正确找到XML文件路径 为了阅读它,我使用了XML序列化程序(),我只想知道为了获得XML文件的实际文件路径,我是否需要做些什么 我尝试过使用streaming assets方法,所以我有一个名为streaming assets的文件夹,其中包含我想要读取的XML文件。我尝试使用此代码尝试访问它(我的ItemContainer与Monst

我有一款Unity制作的游戏,我正试图将其部署在Android设备上。我试图使用XML文件在设备上存储信息,但问题是,当游戏在任何Android设备上时,它无法正确找到XML文件路径

为了阅读它,我使用了XML序列化程序(),我只想知道为了获得XML文件的实际文件路径,我是否需要做些什么

我尝试过使用streaming assets方法,所以我有一个名为streaming assets的文件夹,其中包含我想要读取的XML文件。我尝试使用此代码尝试访问它(我的ItemContainer与MonsterContainer的工作方式相同):

不过,这在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;
}
private void XMLSerializerLoad()
{
字符串路径;
path=Application.streamingAssetsPath+“/assets/”+_xmlFile.name+“.xml”;
start例程(MyRead(path));
}
IEnumerator MyRead(字符串路径)
{
ItemContainer\u项目;
WWW=新WWW(路径);
收益率;
_items=ItemContainer.LoadFromText(www.text);
_拼写单词=新列表();//设置为空列表
_拼写单词=\项。\项;
}
但当我运行这个时,我得到:

XmlException:文档未出现。第1行位置1


Android中的Mono.Xml2.XmlTextReader.Read()

Application.streamingassetpath已经包含file://文件,因此您需要在Android中省略该文件才能使其工作

  path = Application.streamingAssetsPath + "!/assets/" +   _xmlFile.name + ".xml";
Application.dataPath也一样,您不需要添加file://或jar:file://


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

应用程序中的streamingAssetsPath已经包含文件:/,因此您需要在Android中省略该文件,以便它工作

  path = Application.streamingAssetsPath + "!/assets/" +   _xmlFile.name + ".xml";
Application.dataPath也一样,您不需要添加file://或jar:file://


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

不幸的是,您的建议没有奏效。我为android部署构建了我的游戏,但当我按下一个按钮,该按钮应该运行使用从XML文件中获取的信息的方法时,它没有达到我想要的效果。如果我尝试制作一个旨在说明我的问题而不是描述问题的快速项目,它会有所帮助吗?Streaming assets文件夹不是真的是为了保存东西。使用Application.dataPath+\u xmlFilename.xml保存。你确定文件存在吗?也许你还没有创建它,你试图打开它阅读。考虑检查它的存在,我已经在可能的位置上复制了多个文件,所以我不知道它是怎么找不到文件的。另外,我没有保存,重点是我正在尝试读取文件,显然我只能使用StreamingAssets路径,但从你所说的,我唯一能做的事情就是制作一个脚本,将文件装箱到数据路径位置,然后由程序加载我想要的所有内容不幸的是,你的建议不起作用。我为android部署构建了我的游戏,但当我按下一个按钮,该按钮应该运行使用从XML文件中获取的信息的方法时,它没有达到我想要的效果。如果我尝试制作一个旨在说明我的问题而不是描述问题的快速项目,它会有所帮助吗?Streaming assets文件夹不是真的是为了保存东西。使用Application.dataPath+\u xmlFilename.xml保存。你确定文件存在吗?也许你还没有创建它,你试图打开它阅读。考虑检查它的存在,我已经在可能的位置上复制了多个文件,所以我不知道它是怎么找不到文件的。另外,我没有保存,重点是我试图读取文件,显然我只能使用StreamingAssets path,但从你说的话来看,我唯一能做的就是制作一个脚本,将一个文件包装在datapath位置,并通过程序加载我想要的所有内容