Как читать данные из текстового файла в единстве

14

Кто-нибудь может мне помочь с указанием шагов, необходимых для чтения данных из текстового файла в единстве и как можно добавить скрипт.

user1509674
источник
youtube.com/watch?v=6c1fTHkYzTQ То есть читать текст на языке c #… который вам поможет :)
Savlon
Является ли текстовый файл активом (частью вашего проекта Unity) или находится в файловой системе?
Келли Томас
он расположен в файловой системе. Я поместил свой файл на диск E и использовал следующий код `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 (строка в строках) {print (строка); }} `
user1509674
VTC как не специфичный для игры. IO - это общее программирование, оно должно быть в переполнении стека, а не в GameDev.
Гнемлок
Принятый ответ не единство конкретный, но наибольшее количество голосов ответ (который имо должны был быть принят) является единство специфичны.
Джоккинг

Ответы:

8

Версия 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( );  
}

РЕДАКТИРОВАТЬ: (Исправлена ​​ошибка в строке 9; изменено "stm.ReadLine ();" на "inp_stm.ReadLine ();")

user43609
источник
27

Есть класс с именем TextAssets, который используется для чтения текстовых файлов. http://docs.unity3d.com/Manual/class-TextAsset.html Здесь вы можете найти поддерживаемый формат файла.

Так что если вы хотите прочитать текстовый файл, скрипт будет выглядеть так:

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

или вы можете прочитать текст как ресурс:

TextAsset text = Resources.Load("YourFilePath") as TextAsset;
Слушать
источник
7
Также стоит упомянуть, что данный TextAssetвопрос, вероятно, должен быть помещен в Assets/Resourcesпапку. Это самый правильный ответ, так как все остальные ответы, похоже, игнорируют тот факт, что это внутри Единства. Они являются правильными способами чтения файла в C #, но игнорируют такие вещи, как кроссплатформенное развертывание и пути.
МакАден
1
Если вы используете TextAsset, вы можете перетащить ссылку на MonoBehaviour и использовать свойство yext. В этом случае это не должно быть в Ресурсах
Rage
4

Вы можете сделать это так же, как в .NET

string word = File.ReadAllText(txtFilePath);

Этот фрагмент кода может быть использован в любом месте, где вы пожелаете.

rh8938
источник
2

Этот код работает нормально для меня, чтобы прочитать содержимое в текстовом файле

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
источник