So lesen Sie Daten aus einer Textdatei in einer Einheit
14
Kann mir jemand helfen, die erforderlichen Schritte zum Lesen von Daten aus der Textdatei in einer Einheit anzugeben und wie das Skript hinzugefügt werden kann?
Ist die Textdatei ein Asset (Teil Ihres Unity-Projekts) oder befindet sie sich im Dateisystem?
Kelly Thomas
Es befindet sich auf dem Dateisystem. Ich habe meine Datei auf dem Laufwerk E abgelegt und den folgenden Code verwendet: `import System.IO; var filename = "data.txt"; Funktion Start () {var sourse = neuer StreamReader (Application.dataPath + "/" + Dateiname); var fileContents = sourse.ReadToEnd (); sourse.Close (); var lines = fileContents.Split ("\ n" [0]); für (Zeile in Zeilen) {print (Zeile); }} `
user1509674
VTC als nicht spielspezifisch. IO ist generische Programmierung, dies sollte auf Stack Overflow sein, nicht auf GameDev.
Gnemlock
Die akzeptierte Antwort ist nicht Unity-spezifisch, aber die Antwort mit der höchsten Bewertung (welche imo hätte akzeptiert werden sollen) ist Unity-spezifisch.
jhocking
Antworten:
8
C # -Version.
using System.IO;void readTextFile(string file_path){StreamReader inp_stm =newStreamReader(file_path);while(!inp_stm.EndOfStream){string inp_ln = inp_stm.ReadLine();// Do Something with the input. }
inp_stm.Close();}
BEARBEITEN: (Fehler in Zeile 9 behoben; "stm.ReadLine ();" in "inp_stm.ReadLine ();" geändert)
Wenn Sie also die Textdatei lesen möchten, sieht das Skript folgendermaßen aus:
classYourClassName:MonoBehaviour{publicTextAsset textFile;// drop your file here in inspectorvoidStart(){string text = textFile.text;//this is the content as stringbyte[] byteText = textFile.bytes;//this is the content as byte array}}
oder Sie können den Text wie folgt als Ressource lesen:
TextAsset text =Resources.Load("YourFilePath")asTextAsset;
Erwähnenswert ist auch, dass die TextAssetfragliche wahrscheinlich in den Assets/ResourcesOrdner gelegt werden sollte. Dies ist die richtigste Antwort, da alle anderen Antworten die Tatsache zu ignorieren scheinen, dass dies innerhalb der Einheit ist. Sie sind die richtige Methode zum Lesen einer Datei in C #, ignorieren jedoch Dinge wie plattformübergreifende Bereitstellung und Pfade.
McAden
1
Wenn Sie TextAsset verwenden, ziehen Sie den Verweis auf ein MonoBehaviour und verwenden die Eigenschaft yext. In diesem Fall muss es nicht in Respurces
Rakka Rage
4
Sie können dies genauso tun wie in .NET
string word =File.ReadAllText(txtFilePath);
Dieses Code-Snippet kann dann an jedem beliebigen Ort verwendet werden.
Antworten:
C # -Version.
BEARBEITEN: (Fehler in Zeile 9 behoben; "stm.ReadLine ();" in "inp_stm.ReadLine ();" geändert)
quelle
Es gibt eine Klasse namens TextAssets, die zum Lesen von Textdateien verwendet wird. http://docs.unity3d.com/Manual/class-TextAsset.html Hier finden Sie das unterstützte Dateiformat.
Wenn Sie also die Textdatei lesen möchten, sieht das Skript folgendermaßen aus:
oder Sie können den Text wie folgt als Ressource lesen:
quelle
TextAsset
fragliche wahrscheinlich in denAssets/Resources
Ordner gelegt werden sollte. Dies ist die richtigste Antwort, da alle anderen Antworten die Tatsache zu ignorieren scheinen, dass dies innerhalb der Einheit ist. Sie sind die richtige Methode zum Lesen einer Datei in C #, ignorieren jedoch Dinge wie plattformübergreifende Bereitstellung und Pfade.Sie können dies genauso tun wie in .NET
Dieses Code-Snippet kann dann an jedem beliebigen Ort verwendet werden.
quelle
Dieser Code funktioniert gut für mich, um den Inhalt in der Textdatei zu lesen
quelle