Save/Load mit txt, 2: Laden
Hallo nochmal,
dies ist hier gleich der zweite teil zu meinem Tutorial zum speichern und laden via Textdatei.
Jetzt geht es ums Laden.
Wer das vorige Tutorial mitgemacht hat, der öffnet jetzt seine savegame.txt und hat so was in der Art vorliegen:
[quote]2.54939
1.05
1.030781[/quote]
Jetzt müssen wir das ganze aber noch wieder einlesen und laden.
Wie geht jetzt das?
Dazu stöbern wir bei [url="http://msdn.microsoft.com/de-de/library/29kt2zfk(v=vs.80).aspx"]System.IO[/url] im msdn rum und entdecken folgende Klasse:
den [url="http://msdn.microsoft.com/de-de/library/system.io.streamreader(v=vs.80).aspx"]StreamReader[/url], also dem Gegenstück zum StreamWriter?
Ja, ganz genau.
Also öffnen wir unser Script und gehen zu unserer Funktion ReadFile() und fügen folgendes hinzu:
[CODE]function ReadFile () {
//wir öffnen einen neuen StreamReader
var sr = new StreamReader(Application.dataPath +"/Savegame.txt");
//Lese zeilen aus...
Player.position.x = parseFloat(sr.ReadLine()); //parse Float, weil es als String gelesen wird
Player.position.y = parseFloat(sr.ReadLine());
Player.position.z = parseFloat(sr.ReadLine());
sr.Close(); //damit schließen wir unseren StreamReader
}[/CODE]
Wir brauchen das parseFloat, um die Umwandlung von String zu Float wieder vorzunehmen Alles andere erklärt sich von selbst.
Wie,das wars?
Ja, das wars.
Jetzt nochmal das ganze Script:
[CODE] #pragma strict
import System.IO;
var Player: Transform;
function WriteFile () {
//wir öffnen einen neuen StreamWriter
var sw : StreamWriter = new StreamWriter(Application.dataPath +"/Savegame.txt");
//drei Zeilenschreiben: position x,y,z
sw.WriteLine(Player.position.x);
sw.WriteLine(Player.position.y);
sw.WriteLine(Player.position.z);
sw.Flush();
sw.Close(); //damit schliessen wir den StreamWriter
}
function ReadFile () {
//wir öffnen einen neuen StreamReader
var sr = new StreamReader(Application.dataPath +"/Savegame.txt");
//Lese zeilen aus...
Player.position.x = parseFloat(sr.ReadLine()); //parse Float, weil es als String gelesen wird
Player.position.y = parseFloat(sr.ReadLine());
Player.position.z = parseFloat(sr.ReadLine());
sr.Close(); //damit schließen wir unseren StreamReader
}
function OnGUI() {
if(GUI.Button(Rect (0,0,150,50),"Save")){
WriteFile();
}
if(GUI.Button(Rect (0,50,150,50),"Load")){
ReadFile();
}
}[/CODE]
Es gibt aber noch viel viel coolere Techniken!
Aber dafür gibts dann einen dritten Tutorialteil.
Bis dahin:
Viel Spass beim experimentiern mit txt Dateien!
Xenes
dies ist hier gleich der zweite teil zu meinem Tutorial zum speichern und laden via Textdatei.
Jetzt geht es ums Laden.
Wer das vorige Tutorial mitgemacht hat, der öffnet jetzt seine savegame.txt und hat so was in der Art vorliegen:
[quote]2.54939
1.05
1.030781[/quote]
Jetzt müssen wir das ganze aber noch wieder einlesen und laden.
Wie geht jetzt das?
Dazu stöbern wir bei [url="http://msdn.microsoft.com/de-de/library/29kt2zfk(v=vs.80).aspx"]System.IO[/url] im msdn rum und entdecken folgende Klasse:
den [url="http://msdn.microsoft.com/de-de/library/system.io.streamreader(v=vs.80).aspx"]StreamReader[/url], also dem Gegenstück zum StreamWriter?
Ja, ganz genau.
Also öffnen wir unser Script und gehen zu unserer Funktion ReadFile() und fügen folgendes hinzu:
[CODE]function ReadFile () {
//wir öffnen einen neuen StreamReader
var sr = new StreamReader(Application.dataPath +"/Savegame.txt");
//Lese zeilen aus...
Player.position.x = parseFloat(sr.ReadLine()); //parse Float, weil es als String gelesen wird
Player.position.y = parseFloat(sr.ReadLine());
Player.position.z = parseFloat(sr.ReadLine());
sr.Close(); //damit schließen wir unseren StreamReader
}[/CODE]
Wir brauchen das parseFloat, um die Umwandlung von String zu Float wieder vorzunehmen Alles andere erklärt sich von selbst.
Wie,das wars?
Ja, das wars.
Jetzt nochmal das ganze Script:
[CODE] #pragma strict
import System.IO;
var Player: Transform;
function WriteFile () {
//wir öffnen einen neuen StreamWriter
var sw : StreamWriter = new StreamWriter(Application.dataPath +"/Savegame.txt");
//drei Zeilenschreiben: position x,y,z
sw.WriteLine(Player.position.x);
sw.WriteLine(Player.position.y);
sw.WriteLine(Player.position.z);
sw.Flush();
sw.Close(); //damit schliessen wir den StreamWriter
}
function ReadFile () {
//wir öffnen einen neuen StreamReader
var sr = new StreamReader(Application.dataPath +"/Savegame.txt");
//Lese zeilen aus...
Player.position.x = parseFloat(sr.ReadLine()); //parse Float, weil es als String gelesen wird
Player.position.y = parseFloat(sr.ReadLine());
Player.position.z = parseFloat(sr.ReadLine());
sr.Close(); //damit schließen wir unseren StreamReader
}
function OnGUI() {
if(GUI.Button(Rect (0,0,150,50),"Save")){
WriteFile();
}
if(GUI.Button(Rect (0,50,150,50),"Load")){
ReadFile();
}
}[/CODE]
Es gibt aber noch viel viel coolere Techniken!
Aber dafür gibts dann einen dritten Tutorialteil.
Bis dahin:
Viel Spass beim experimentiern mit txt Dateien!
Xenes
8 Kommentare
Recommended Comments