#c# #unity3d #virtual-reality #eye-tracking
#c# #unity3d #виртуальная реальность #отслеживание глаз
Вопрос:
Я создал сцену в 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. Я не программист Unity, но мне кажется, что если скрипт запускается с кнопки, то новый файл также должен быть создан там.
Ответ №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
}
}
}