Cómo leer datos de un archivo de texto en la unidad

14

¿Alguien puede ayudarme a dar los pasos necesarios para leer los datos del archivo de texto en unidad y cómo se puede agregar el script?

usuario1509674
fuente
youtube.com/watch?v=6c1fTHkYzTQ Eso es leer el texto en c # ... que te ayudará :)
Savlon
¿El archivo de texto es un activo (parte de su proyecto de Unity) o está ubicado en el sistema de archivos?
Kelly Thomas
está ubicado en el sistema de archivos. Coloqué mi archivo en la unidad E y usé el siguiente código `import System.IO; var filename = "data.txt"; función Start () {var sourse = new StreamReader (Application.dataPath + "/" + filename); var fileContents = sourse.ReadToEnd (); sourse.Close (); var lines = fileContents.Split ("\ n" [0]); para (línea en líneas) {print (línea); }} `
usuario1509674
VTC como no específico del juego. IO es una programación genérica, esto debería estar en Stack Overflow, no en GameDev.
Gnemlock
La respuesta aceptada no es específica de Unity, pero la respuesta más votada (que debería haber sido aceptada) es específica de Unity.
jhocking

Respuestas:

8

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

EDITAR: (Se corrigió un error en la línea 9; se cambió "stm.ReadLine ();" a "inp_stm.ReadLine ();")

usuario43609
fuente
27

Hay una clase llamada TextAssets que se usa para la lectura de archivos de texto. http://docs.unity3d.com/Manual/class-TextAsset.html Aquí puede encontrar el formato de archivo compatible.

Entonces, si desea leer el archivo de texto, el script sería así:

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

o puede leer el texto como un recurso como este:

TextAsset text = Resources.Load("YourFilePath") as TextAsset;
Escucha
fuente
77
También vale la pena mencionar que el TextAsseten cuestión probablemente debería colocarse dentro de la Assets/Resourcescarpeta. Esta es la respuesta más correcta ya que todas las otras respuestas parecen ignorar el hecho de que esto está dentro de la Unidad. Son formas correctas de leer un archivo en C # pero ignoran cosas como la implementación y rutas multiplataforma.
McAden
1
Si usa TextAsset, probablemente arrastre la referencia a MonoBehaviour y use la propiedad yext. En cuyo caso no necesita estar en Respurces
Rakka Rage
4

Puede hacerlo de la misma manera que lo haría en .NET

string word = File.ReadAllText(txtFilePath);

Este fragmento de código se puede usar en cualquier ubicación que desee.

rh8938
fuente
2

Este código está funcionando bien para que yo lea el contenido en el archivo de texto

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