วิธีการอ่านข้อมูลจากไฟล์ข้อความในเอกภาพ


14

ทุกคนสามารถช่วยฉันด้วยการทำตามขั้นตอนที่จำเป็นสำหรับการอ่านข้อมูลจากไฟล์ข้อความด้วยความสามัคคีและจะเพิ่มสคริปต์ได้อย่างไร


youtube.com/watch?v=6c1fTHkYzTQนั่นก็คือการอ่านข้อความใน c # ... ซึ่งจะช่วยให้คุณ :)
Savlon

ไฟล์ข้อความเป็นสินทรัพย์ (เป็นส่วนหนึ่งของโครงการ Unity ของคุณ) หรืออยู่ในระบบไฟล์หรือไม่?
Kelly Thomas

มันตั้งอยู่บน filesystem.I ได้วางไฟล์ของฉันในไดรฟ์ E และใช้รหัสต่อไปนี้ `` นำเข้า System.IO; var filename = "data.txt"; ฟังก์ชั่นเริ่มต้น () {var sourse = ใหม่ StreamReader (Application.dataPath + "/" + ชื่อไฟล์); var fileContents = sourse.ReadToEnd (); sourse.Close (); var lines = fileContents.Split ("\ n" [0]); สำหรับ (บรรทัดในบรรทัด) {พิมพ์ (บรรทัด); }} `
1509674

VTC ไม่ใช่เกมเฉพาะ IO เป็นโปรแกรมทั่วไปซึ่งควรอยู่ใน Stack Overflow ไม่ใช่ GameDev
Gnemlock

คำตอบที่ได้รับการยอมรับไม่ใช่เอกภาพโดยเฉพาะ แต่คำตอบที่ได้รับการโหวตสูงสุด (ซึ่ง IMO ที่ควรได้รับการยอมรับ) เป็นเอกภาพ
jhocking

คำตอบ:


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


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 # แต่ไม่สนใจสิ่งต่าง ๆ เช่นการปรับใช้ข้ามแพลตฟอร์มและพา ธ
McAden

1
ถ้าคุณใช้ TextAsset คุณอาจลากการอ้างอิงไปยัง MonoBehaviour และใช้คุณสมบัติ yext ในกรณีนี้ไม่จำเป็นต้องอยู่ใน Respurces
Rakka 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);
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.