C# android上的Unity游戏无法找到或读取XML文件
我有一款Unity制作的游戏,我正试图将其部署在Android设备上。我试图使用XML文件在设备上存储信息,但问题是,当游戏在任何Android设备上时,它无法正确找到XML文件路径 为了阅读它,我使用了XML序列化程序(),我只想知道为了获得XML文件的实际文件路径,我是否需要做些什么 我尝试过使用streaming assets方法,所以我有一个名为streaming assets的文件夹,其中包含我想要读取的XML文件。我尝试使用此代码尝试访问它(我的ItemContainer与MonsterContainer的工作方式相同): 不过,这在Android上不起作用,但在我的Windows桌面上起作用。然后,我发现WWW可能可以用来查找文件,但它同样不起作用: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
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位置,并通过程序加载我想要的所有内容