每次在统一 3D 中启用脚本时创建一个新的 CSV 文件
Posted
技术标签:
【中文标题】每次在统一 3D 中启用脚本时创建一个新的 CSV 文件【英文标题】:Creating a new CSV file everytime the script is enabled in unity 3D 【发布时间】:2019-08-23 04:28:10 【问题描述】:我使用 VR 在 Unity 中创建了一个场景,我想跟踪用户的位置并将其保存到 CSV 文件。因为我只想要某些任务的位置,所以我不想为整个场景运行脚本。因此创建了一个脚本,通过按钮上的简单 OnClick 事件启用和禁用脚本。
所以我创建了一个脚本,通过按钮上的简单 OnClick 事件启用和禁用脚本。我遇到的问题是,每次我禁用脚本并再次启用它时,都不会创建另一个 csv 文件。
这是我的代码:
public class Eins : MonoBehaviour
string filePath = @"";
string filename;
string fullPath;
string delimiter = "\t";
StreamWriter sw;
string[] output;
string finalOutput;
public GameObject Camera;
private float timer = 0f;
// Start is called before the first frame update
void Start()
filename = "Results_" + DateTime.Now.ToString("yyyy-mm-dd-hh-ss") + "_" + ".txt" + "";
filename = filename.Replace("/", "_");
filename = filename.Replace(":", "_");
filename = filename.Replace(" ", "_");
fullPath = Path.Combine(filePath, filename);
sw = new StreamWriter(fullPath, true);
// Update is called once per frame
public void Update()
timer += Time.deltaTime;
output = new string[]
timer.ToString(),
Camera.transform.position.x.ToString(), Camera.transform.position.z.ToString()
;
finalOutput = String.Join(delimiter, output);
sw.WriteLine(finalOutput);
所以我已经发现问题出在启动函数中。因为它在场景运行时只被调用一次,所以我的文件只会被创建一次。但实际上我不知道如何解决这个问题,因为我不知道如何有一个函数可以在每次再次启用脚本时创建一个 csv 文件。
如果有人可以帮助我,我将不胜感激。
【问题讨论】:
我不是统一程序员,但在我看来,如果脚本是从按钮启动的,那么新文件也应该在那里创建。 【参考方案1】:使用以下模式(简化):
using System.IO;
public class MyClass
private Stream _stream;
private void OnDisable()
_stream?.Dispose();
private void OnEnable()
_stream = File.OpenRead("file.txt");
private void Update()
if (_stream != null)
// do something with it
【讨论】:
以上是关于每次在统一 3D 中启用脚本时创建一个新的 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章
每次 3d 游戏套件项目启动时都会出现 14 个错误 [关闭]