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?

user1509674
quelle
youtube.com/watch?v=6c1fTHkYzTQ Das heißt, Text in c # zu lesen ... das wird Ihnen helfen :)
Savlon
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 = new StreamReader(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)

user43609
quelle
27

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:

class YourClassName : MonoBehaviour{
    public TextAsset textFile;     // drop your file here in inspector

    void Start(){
        string text = textFile.text;  //this is the content as string
        byte[] 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") as TextAsset;
Hör mal zu
quelle
7
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.

rh8938
quelle
2

Dieser Code funktioniert gut für mich, um den Inhalt in der Textdatei zu lesen

import System.IO;

var filename="data.txt";

function Start () {
    var sourse=new StreamReader(Application.dataPath+"/" + filename);
    var fileContents=sourse.ReadToEnd();
    sourse.Close();
    var lines=fileContents.Split("\n"[0]);
    for(line in lines) {
        print(line);
    }
}
user1509674
quelle