如何统一从文本文件中读取数据


14

任何人都可以帮助我给出统一地从文本文件中读取数据所需的步骤以及如何添加脚本。


youtube.com/watch?v=6c1fTHkYzTQ就是用c#阅读文本……这将对您有所帮助:)
Savlon 2014年

文本文件是资产(属于Unity项目的一部分)还是位于文件系统上?
凯利·托马斯

我将文件放在E驱动器中,并使用以下代码`import System.IO;。var filename =“ data.txt”; 函数Start(){var sourse = new StreamReader(Application.dataPath +“ /” +文件名); var fileContents = sourse.ReadToEnd(); sourse.Close(); var lines = fileContents.Split(“ \ n” [0]); for(一行中一行){print(line); }}`
user1509674 2014年

VTC不是特定于游戏的。IO是通用编程,应该在堆栈溢出而不是GameDev上。
Gnemlock

接受的答案不是特定于Unity的,而是投票最高的答案(应该接受imo) 特定于Unity的。
飞速

Answers:


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文件夹中。这是最正确的答案,因为所有其他答案似乎都忽略了它在Unity中的事实。它们是使用C#读取文件的正确方法,但忽略了诸如跨平台部署和路径之类的问题。
麦卡登

1
如果使用TextAsset,则可能将引用拖动到MonoBehaviour,并使用yext属性。在这种情况下,它不必处于收货状态
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);
    }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.