我使用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文件的功能。
如果有人能帮助我,我将非常感激。
答案 0 :(得分:0)
使用以下模式(简化):
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
}
}
}