在Unity3d中,如何连续读取.txt文件中的位置数据?

时间:2016-05-31 12:09:45

标签: parsing text unity3d text-parsing continuous

在Unity3D中,我想从文本文件中加载位置数据。这是文本文件的示例。这些是模拟结果。模拟程序每秒生成30个数据。所以,我想实时想象结果。内容是x,y,z位置。

data_01.txt

1 -5 -10

data_ 02.txt

2 2 5

data_03.txt

3 2 4

...............

所有文件都包含1行。

我想将这些数据输入到对象中。

我想每1秒加载30个文本文件中的文本文件。

我编写了读取第一个文本文件的代码。 但是,我需要一些关于不断阅读文本文件的建议。我想每帧读取1个文本文件。

using UnityEngine;
using System.Collections;
using System;
using System.IO;

public class parsing : MonoBehaviour {

    public string fileName = "Data_01.txt"

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

        if (!File.Exists(fileName))
        {
            Debug.Log(fileName + "does not exist.");
            return;
        }

        using (StreamReader sr = File.OpenText(fileName))
        {
            String fileData;
            fileData = sr.ReadToEnd();
            sr.Close();

            Debug.Log("Data Read: " + fileData);

        }

    }
}

1 个答案:

答案 0 :(得分:1)

通过文本文件传输连续数据是一个非常糟糕的主意/方法。

最好使用(例如)tcp连接,并使用.Nets'System.Net.Sockets(更确切地说是TcpListenerTcpClient)将模拟数据发送到统一。

请参阅:https://msdn.microsoft.com/en-us/library/system.net.sockets(v=vs.110).aspx

(如果你想坚持你的方法,你必须知道每个Update()读取的文本文件的名称。你可以使用一个计数器变量(例如,将它命名为计数器),这是递增的每个Update()。通过这种方式,您可以将当前文本文件名称粘贴在一起,如string filename = "data_" + counter.ToString("D2") + ".txt"。(如果计数器的值只有一位数,ToString("D2")将添加前导零,例如1 - > ;“01”)