Як читати дані з текстового файлу в єдності


14

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


youtube.com/watch?v=6c1fTHkYzTQ Тобто читати текст c #…, який допоможе тобі :)
Савлон

Чи є текстовий файл активом (частиною вашого проекту Unity) або розміщений у файловій системі?
Келлі Томас

він розміщений у файловій системі. Я розмістив мій файл у приводі E і використав наступний код `імпорт System.IO; var filename = "data.txt"; функція Start () {var sourse = new StreamReader (Application.dataPath + "/" + ім'я файлу); var fileContents = sourse.ReadToEnd (); кисень.Закрити (); var лінії = fileContents.Split ("\ n" [0]); for (рядок у рядках) {print (рядок); }} `
user1509674

VTC як не гра специфічна. IO - це загальне програмування, це повинно бути в Stack Overflow, а не в GameDev.
Gnemlock

Прийнята відповідь не є специфікою Єдності, але найвища відповідь (яка має бути прийнята) - це єдність.
поштовх

Відповіді:


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

EDIT: (Виправлена ​​помилка у рядку 9; змінено "stm.ReadLine ();" на "inp_stm.ReadLine ();")


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. У такому випадку це не потрібно бути в Respurces
Rage

4

Ви можете зробити це так само, як і в .NET

string word = File.ReadAllText(txtFilePath);

Цей фрагмент коду можна використовувати в будь-якому місці, яке ви бажаєте тоді.


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);
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.