2016-03-25 7 views
1

Ich speichere den Fortschritt des Spiels in XML-Datei. Da der Spieler die Runde wählen kann, die sie spielen möchten, aber nicht eine Runde wiederholen, sobald sie abgeschlossen ist. Die Dateien werden bearbeitet und aktualisiert, aber die Änderungen spiegeln sich nicht im Spiel wider, bis ich das Spiel neu starte.XML-Asset in Unity neu laden

Ich hatte AssetDatabase.ImportAsset() bis jetzt verwendet, aber ich brauche eine Alternative für den Android-Export.

+0

1) Welche Änderungen werden erst wiedergegeben, wenn das Spiel neu gestartet wird? 2) Wechseln Spieler zwischen verschiedenen "Progressionsspielen" mitten im Spiel? – HappyCoding

+1

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

+0

Dank @joe, die sehr geholfen haben. Wenn es Ihnen gut geht, können Sie auch hier antworten, oder ich kann meine eigene Frage mit dieser Information beantworten. –

Antwort

2

Die gute Nachricht ist in Unity, es ist unglaublich einfach, Textdateien zu speichern/zu lesen.

Ein absolut wichtiger Punkt ...

Eine extrem verwirrend Tatsache über Unity ist, dass, ganz einfach, Sie Application.persistentDataPath (alle Plattformen, die ganze Zeit, jedes einzelne Mal - keine Ausnahmen) verwenden müssen . "So einfach ist das!"

Aus irgendeinem Grund, beginnend vor ein paar Jahren gab es kam einige Code-Beispiele auf dem www über andere Pfade und Zugriff auf andere Ordner. (A) Es gibt keinen Grund, irgendwelche anderen Ordner oder Eide zu verwenden (B) Sie können einfach nicht andere Ordner oder Pfade verwenden.

Es ist unglaublich einfach, Dateien in Unity zu schreiben und zu lesen.

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) 

das ist alles, was es ist.

string currentText = File.ReadAllText(filePath); 

Beachten Sie, dass Sie bitten, Ihre spezifischen XML-Dateien in Bezug auf „sollte ich sie manuell hinzufügen auf dem ersten Lauf“

Es ist einfach, Ihr Algorithmus ist, die Dateiinformationen zu erhalten ...

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); 
} 

ist es wirklich so einfach - nichts dran. (PS, ich weiß nicht über Ihre spezifische Situation, ob Sie die Datei ".txt" oder ".xml" nennen sollten - wirklich ist egal, außer um es klar zu machen oder Ihre Kollegen; versuchen Sie beides.)