Come leggere un dato da un file di testo in unità


14

Qualcuno può aiutarmi a dare i passaggi necessari per leggere i dati dal file di testo in unità e come può essere aggiunto lo script.


youtube.com/watch?v=6c1fTHkYzTQ Cioè leggere il testo in c # ... che ti aiuterà :)
Savlon,

Il file di testo è un asset (parte del progetto Unity) o si trova nel file system?
Kelly Thomas,

si trova sul filesystem. Ho inserito il mio file nell'unità E e ho usato il seguente codice `import System.IO; var nomefile = "data.txt"; funzione Start () {var sourse = new StreamReader (Application.dataPath + "/" + nomefile); var fileContents = sourse.ReadToEnd (); sourse.Close (); var lines = fileContents.Split ("\ n" [0]); per (linea in linee) {stampa (linea); }} `
user1509674

VTC come non specifico del gioco. IO è una programmazione generica, dovrebbe essere su Stack Overflow, non su GameDev.
Gnemlock,

La risposta accettata non è specifica di Unity, ma la risposta più votata (quale imo avrebbe dovuto essere accettata) è specifica di Unity.
jhocking

Risposte:


8

Versione C #.

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

EDIT: (risolto un errore sulla riga 9; modificato "stm.ReadLine ();" in "inp_stm.ReadLine ();")


27

Esiste una classe denominata TextAssets che viene utilizzata per la lettura di file di testo. http://docs.unity3d.com/Manual/class-TextAsset.html Qui puoi trovare il formato file supportato.

Quindi, se vuoi leggere il file di testo, lo script sarebbe così:

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

oppure puoi leggere il testo come risorsa in questo modo:

TextAsset text = Resources.Load("YourFilePath") as TextAsset;

7
Vale anche la pena ricordare che la TextAssetdomanda in questione dovrebbe essere probabilmente inserita nella Assets/Resourcescartella. Questa è la risposta più corretta in quanto tutte le altre risposte sembrano ignorare il fatto che si trova all'interno di Unity. Sono modi corretti di leggere un file in C # ma ignorano cose come la distribuzione multipiattaforma e i percorsi.
McAden,

1
Se si utilizza TextAsset è probabile trascinare il riferimento in un comportamento MonoBeur e utilizzare la proprietà yext. Nel qual caso non è necessario essere in Respurces
Rakka Rage

4

Puoi farlo come faresti in .NET

string word = File.ReadAllText(txtFilePath);

Questo frammento di codice può essere utilizzato in qualsiasi posizione desideri.


2

Questo codice funziona bene per me per leggere il contenuto nel file di testo

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);
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.