2016-03-25 7 views
1

私はXMLファイルにゲームの進行状況を保存しています。 プレイヤーはプレイしたいラウンドを選択できますが、完了したらラウンドを繰り返すことはできません。 ファイルが正しく編集され、更新されていますが、ゲームを再起動するまで、変更内容はゲーム内に反映されません。UnityにXMLアセットをリロードする

私は今までAssetDatabase.ImportAsset()を使用していましたが、私はアンドロイドのエクスポートのための代替手段が必要です。

+0

1)具体的な変更は、ゲームを再開するまで反映されません。 2)プレイヤーはゲームの途中で異なる「プログレッションゲームセーブ」を切り替えるのですか? – HappyCoding

+1

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

+0

多くの助けをしてくれてありがとう@ジョー。それが大丈夫ならここで答えてもいいですか、それとも自分の質問にその情報を使って答えることができますか? –

答えて

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) 

これがすべてです。あなたは、特定のXMLファイルについて尋ねる

string currentText = File.ReadAllText(filePath); 

注意、

それは、あなたのアルゴリズムである、ファイル情報を取得するために簡単です...「私は最初の実行時に手動で追加する必要があります」

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"にするかどうか、具体的な状況はわかりませんが、どちらもそれを明確にすること以外は問題ありません)。

関連する問題