2016-03-25 54 views
1

我將遊戲的進度存儲在XML文件中。 由於玩家可以選擇他們想玩的回合,但是一旦完成就不會重複回合。 正在編輯和更新文件正確,但是,更改不會反映在遊戲內,直到我重新啓動遊戲。在Unity中重新加載XML資產

我一直在使用AssetDatabase.ImportAsset()直到現在,但我需要一個替代android導出。

+0

1)在遊戲重新啓動之前,哪些變化沒有被反映出來? 2)玩家是否在遊戲中間切換不同的「進階遊戲存檔」? – HappyCoding

+1

http://stackoverflow.com/a/35941579/294884 – Fattie

+0

謝謝@joe,幫助了很多。如果可以,你也可以在這裏回答,或者我可以使用該信息回答我自己的問題。 –

回答

2

好消息是在Unity中它非常容易保存/讀取文本文件。

一個絕對關鍵的一點...

關於團結的極其混亂的事實是,很簡單,必須使用Application.persistentDataPath(所有平臺上,所有的時間,每一次 - 沒有例外) 。 「就這麼簡單!」

出於某種原因,從幾年前開始,在www上出現了一些關於使用其他路徑和訪問其他文件夾的代碼示例。 (A)沒有任何理由使用任何其他文件夾或宣誓(B)您只需而不是使用任何其他文件夾或路徑。

在Unity中編寫和讀取文件非常容易。

using System.IO; 
// IO crib sheet.. 
// filePath = Application.persistentDataPath+"/"+fileName; 
// check if file exists System.IO.File.Exists(f) 
// write to file File.WriteAllText(f,t) 
// delete the file if needed File.Delete(f) 
// read from a file File.ReadAllText(f) 

這就是它的全部。

string currentText = File.ReadAllText(filePath); 

請注意,您詢問有關您的特定的XML文件,「應該我手動添加它們在第一次運行」

這很簡單,你的算法是,以獲取文件信息...

public string GetThatXMLStuff() 
{ 
filePath = Application.persistentDataPath+"/"+"defaults.txt"; 
.. check if it already exists: 
if (! System.IO.File.Exists(f)) 
    { 
    .. put in the default/blank/whatever file 
    string default = "blah" 
    File.WriteAllText(f,default) 
    } 
.. now you know it exists. just get it 
return File.ReadAllText(f); 
} 

這真的很簡單 - 沒有什麼。 (PS,我不知道您的具體情況,您是否應該將文件命名爲「.txt」或「.xml」 - 除了明確或同事之外其他方式都無關緊要;嘗試兩種方式。)