Czy plik tekstowy jest zasobem (częścią twojego projektu Unity) czy znajduje się w systemie plików?
Kelly Thomas
znajduje się w systemie plików. Umieściłem mój plik na dysku E i użyłem następującego kodu `import System.IO; var filename = "data.txt"; funkcja Start () {var sourse = new StreamReader (Application.dataPath + "/" + filename); var fileContents = sourse.ReadToEnd (); sourse.Close (); var lines = fileContents.Split ("\ n" [0]); for (linia w linii) {print (linia); }} `
user1509674
VTC jako nie specyficzne dla gry. IO to programowanie ogólne, powinno być na przepełnieniu stosu, a nie GameDev.
Gnemlock,
Przyjęta odpowiedź nie jest specyficzna dla Jedności, ale najwyższa głosowana odpowiedź (które imo powinno zostać zaakceptowane) jest specyficzna dla Jedności.
jhocking
Odpowiedzi:
8
Wersja C #.
using System.IO;void readTextFile(string file_path){StreamReader inp_stm =newStreamReader(file_path);while(!inp_stm.EndOfStream){string inp_ln = inp_stm.ReadLine();// Do Something with the input. }
inp_stm.Close();}
EDYCJA: (Naprawiono błąd w linii 9; zmieniono „stm.ReadLine ();” na „inp_stm.ReadLine ();”)
Więc jeśli chcesz odczytać plik tekstowy, skrypt wyglądałby tak:
classYourClassName:MonoBehaviour{publicTextAsset textFile;// drop your file here in inspectorvoidStart(){string text = textFile.text;//this is the content as stringbyte[] byteText = textFile.bytes;//this is the content as byte array}}
lub możesz przeczytać tekst jako taki zasób:
TextAsset text =Resources.Load("YourFilePath")asTextAsset;
Warto również wspomnieć, że TextAssetpytanie to powinno być prawdopodobnie umieszczone w Assets/Resourcesfolderze. To jest najbardziej poprawna odpowiedź, ponieważ wszystkie inne odpowiedzi wydają się ignorować fakt, że jest to w obrębie Jedności. Są poprawnymi sposobami odczytu pliku w języku C #, ale ignorują takie rzeczy, jak wdrażanie i ścieżki między platformami.
McAden
1
Jeśli używasz TextAsset, możesz przeciągnąć odwołanie do MonoBehaviour i użyć właściwości yext. W takim przypadku nie musi być w Respurces
Rakka Rage
4
Możesz to zrobić w taki sam sposób, jak w .NET
string word =File.ReadAllText(txtFilePath);
Tego fragmentu kodu można następnie użyć w dowolnej lokalizacji.
Odpowiedzi:
Wersja C #.
EDYCJA: (Naprawiono błąd w linii 9; zmieniono „stm.ReadLine ();” na „inp_stm.ReadLine ();”)
źródło
Istnieje klasa o nazwie TextAssets, która jest używana do odczytu plików tekstowych. http://docs.unity3d.com/Manual/class-TextAsset.html Tutaj znajdziesz obsługiwany format pliku.
Więc jeśli chcesz odczytać plik tekstowy, skrypt wyglądałby tak:
lub możesz przeczytać tekst jako taki zasób:
źródło
TextAsset
pytanie to powinno być prawdopodobnie umieszczone wAssets/Resources
folderze. To jest najbardziej poprawna odpowiedź, ponieważ wszystkie inne odpowiedzi wydają się ignorować fakt, że jest to w obrębie Jedności. Są poprawnymi sposobami odczytu pliku w języku C #, ale ignorują takie rzeczy, jak wdrażanie i ścieżki między platformami.Możesz to zrobić w taki sam sposób, jak w .NET
Tego fragmentu kodu można następnie użyć w dowolnej lokalizacji.
źródło
Ten kod działa dobrze dla mnie, aby odczytać zawartość pliku tekstowego
źródło