我有一個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()
不幸的是,你所建議的不起作用。我爲android部署構建我的遊戲,並且當我按下應該運行使用從XML文件 –
中獲取的信息的方法的按鈕時,它無法執行我想要的操作,如果我嘗試製作快速項目旨在說明我的問題,而不是描述發生了什麼問題? –
流媒體資產文件夾不是真的用於保存東西。使用Application.dataPath + _xmlFilename.xml進行保存。你確定該文件存在嗎?也許你還沒有創建它,你試圖打開它閱讀。考慮檢查它的存在 – BlackBrain