2015-10-16 92 views
1

我有一个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()

回答

0

Application.streamingAssetsPath Android中已经包含文件://所以你需要省略android系统,以便为它工作。

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

这对Application.dataPath一样,你不需要添加文件://或jar:文件://

我不明白!是在“!/ assets /”也许这可能是一个问题

+0

不幸的是,你所建议的不起作用。我为android部署构建我的游戏,并且当我按下应该运行使用从XML文件 –

+0

中获取的信息的方法的按钮时,它无法执行我想要的操作,如果我尝试制作快速项目旨在说明我的问题,而不是描述发生了什么问题? –

+0

流媒体资产文件夹不是真的用于保存东西。使用Application.dataPath + _xmlFilename.xml进行保存。你确定该文件存在吗?也许你还没有创建它,你试图打开它阅读。考虑检查它的存在 – BlackBrain