在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);
}
}
}
答案 0 :(得分:1)
通过文本文件传输连续数据是一个非常糟糕的主意/方法。
最好使用(例如)tcp连接,并使用.Nets'System.Net.Sockets
(更确切地说是TcpListener
和TcpClient
)将模拟数据发送到统一。
请参阅: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”)