2015-10-16 91 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