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.


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


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;

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.


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);
    }
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.