Como ler dados do arquivo de texto em unidade

14

Alguém pode me ajudar com as etapas necessárias para a leitura de dados do arquivo de texto em unidade e como o script pode ser adicionado.

user1509674
fonte
youtube.com/watch?v=6c1fTHkYzTQ Isso é ler texto em c # ... o que irá ajudá-lo :)
Savlon
O arquivo de texto é um ativo (parte do seu projeto do Unity) ou está localizado no sistema de arquivos?
Kelly Thomas
está localizado no sistema de arquivos. Coloquei meu arquivo na unidade E e usei o seguinte código `import System.IO; var filename = "data.txt"; função Start () {var sourse = novo StreamReader (Application.dataPath + "/" + nome do arquivo); var fileContents = sourse.ReadToEnd (); sourse.Close (); var linhas = fileContents.Split ("\ n" [0]); for (linha em linhas) {print (line); }} `
user1509674
VTC como não específico do jogo. IO é programação genérica, isso deve estar no Stack Overflow, não no GameDev.
Gnemlock 25/09/16
A resposta aceita não é específica do Unity, mas a resposta mais votada (que imo deveria ter sido aceita) é específica do Unity.
Jhocking

Respostas:

8

Versão 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: (Corrigido um erro na linha 9; alterado "stm.ReadLine ();" para "inp_stm.ReadLine ();")

user43609
fonte
27

Há uma classe chamada TextAssets que é usada para leitura de arquivos de texto. http://docs.unity3d.com/Manual/class-TextAsset.html Aqui você encontra o formato de arquivo suportado.

Portanto, se você quiser ler o arquivo de texto, o script seria assim:

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

ou você pode ler o texto como recurso assim:

TextAsset text = Resources.Load("YourFilePath") as TextAsset;
Ouço
fonte
7
Também vale mencionar que o TextAssetem questão provavelmente deve ser colocado dentro da Assets/Resourcespasta. Esta é a resposta mais correta, pois todas as outras respostas parecem ignorar o fato de que isso está dentro da Unity. Eles são maneiras corretas de ler um arquivo em C #, mas ignoram coisas como implantação e caminhos entre plataformas.
McAden 26/10/14
1
Se você usa o TextAsset, provavelmente arrasta a referência para um MonoBehaviour e usa a propriedade yext. Nesse caso, ele não precisa estar em Respurces
Rakka Rage
4

Você pode fazer isso da mesma maneira que faria no .NET

string word = File.ReadAllText(txtFilePath);

Esse snippet de código pode ser usado em qualquer local que você desejar.

rh8938
fonte
2

Este código está funcionando bem para eu ler o conteúdo no arquivo 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);
    }
}
user1509674
fonte