Unity顺序读取一个文件下的所有文本文档里面的数据,每一秒执行一次,每次读取忽略之前读取的内容,每读取一次输出一次,将每次读取到的数据汇总输入到指定的文本文档下,每0.1秒执行一次该指令,整体代码
时间: 2024-05-10 09:18:41 浏览: 70
以下是一个基本的实现方式:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class FileReader : MonoBehaviour
{
public string folderPath; // 文件夹路径
public string outputPath; // 输出文件路径
public float readInterval = 1f; // 读取间隔时间
public float writeInterval = 0.1f; // 写入间隔时间
private float lastReadTime; // 上次读取时间
private float lastWriteTime; // 上次写入时间
private List<string> readDataList = new List<string>(); // 已经读取的数据列表
private void Start()
{
lastReadTime = Time.time;
lastWriteTime = Time.time;
}
private void Update()
{
// 每 readInterval 秒读取一次
if (Time.time - lastReadTime >= readInterval)
{
ReadFiles();
lastReadTime = Time.time;
}
// 每 writeInterval 秒写入一次
if (Time.time - lastWriteTime >= writeInterval)
{
WriteData();
lastWriteTime = Time.time;
}
}
// 读取文件中的数据
private void ReadFiles()
{
DirectoryInfo dir = new DirectoryInfo(folderPath);
FileInfo[] files = dir.GetFiles("*.txt");
// 遍历所有txt文件
foreach (FileInfo file in files)
{
// 只读取未读取过的文件
if (!readDataList.Contains(file.FullName))
{
string[] lines = File.ReadAllLines(file.FullName);
foreach (string line in lines)
{
readDataList.Add(line);
}
}
}
}
// 将读取到的数据写入到输出文件中
private void WriteData()
{
StreamWriter writer = new StreamWriter(outputPath, true);
foreach (string data in readDataList)
{
writer.WriteLine(data);
}
writer.Close();
}
}
```
使用方法:
将上述代码保存为 C# 脚本,挂载到一个 GameObject 上,将需要读取的 txt 文件放到指定的文件夹下,设置好文件夹路径和输出文件路径,即可实现每秒读取一次文件,每 0.1 秒将读取到的数据写入到指定的输出文件中。
阅读全文