C# Unity导出创建新的.txt文件

C# Unity导出创建新的.txt文件,c#,xml,file,unity3d,statistics,C#,Xml,File,Unity3d,Statistics,我目前正在为德国的高中写一篇论文。我的主题是找出我们如何通过自动化使交通路口更加高效。为此,我正在Unity3D中构建一个小型模拟,现在我正在为汽车编写脚本和设置。为了比较多个设置,我想导出一些数据,以便使用NumPy和Matplotlib对其进行分析。但要做到这一点,我必须从Unity导出数据 现在汽车正在通过一些航路点,我想知道汽车到达这些航路点的时间。 所以现在我只需要在Unity之外以一种格式保存它们,这样我就可以轻松地将其导入我的jupyter笔记本中,以便对其进行分析。 那我该怎么做

我目前正在为德国的高中写一篇论文。我的主题是找出我们如何通过自动化使交通路口更加高效。为此,我正在Unity3D中构建一个小型模拟,现在我正在为汽车编写脚本和设置。为了比较多个设置,我想导出一些数据,以便使用NumPy和Matplotlib对其进行分析。但要做到这一点,我必须从Unity导出数据

现在汽车正在通过一些航路点,我想知道汽车到达这些航路点的时间。 所以现在我只需要在Unity之外以一种格式保存它们,这样我就可以轻松地将其导入我的jupyter笔记本中,以便对其进行分析。 那我该怎么做呢?我知道这可能是一个简单的问题,但大多数指南都是针对游戏对象或角色的。所以他们为了另一个目的保存了它

更新:

谢谢你的帮助。我把它修好了,现在它正在写入一个txt文件。

当我运行脚本时,Unity是否有可能每次都创建一个新的txt文件。我不太确定这是否可能,因为我正在重新启动整个系统,并且没有上次的信息。例如,现在它被称为data1.txt,下一次启动代码时,它将保存到data2.txt中

这是电流输出,仅供参考。


一种简单的方法是将所需内容保存到文件中: 对于每次编码不同的文件,只需在文件名中包含一个时间戳

另一种选择是使用Unity Analytics: 它附带了一些很好的图表,在展示论文时可能会很有用


祝你好运

使用json序列化您可以在会话之间保存和访问数据。非常感谢。我将它打印到一个新的txt文件中,在遇到一些麻烦后,它可以正常工作。@K.Kleinvogel您应该查看Unity Analytics,它会对您进行更高级的游戏有所帮助
void FixedUpdate()
{
    speed = Engine.currentSpeed;
    time = Time.time;
    node = Engine.node;
    xPos = Auto.transform.position.x;
    zPos = Auto.transform.position.z;
    if (IsRunning == true)
    {
        StartCoroutine(Wait());
    }


}

public IEnumerator Wait()
{
    IsRunning = false;
    yield return new WaitForSeconds(WaitTimer);
    Output();
    IsRunning = true;
}

void Output()
{
    print("[" + motorTorque + "," + maxSpeed + "," + steerAngle + "," + node + "," + time + "," + speed + "," + xPos + "," + zPos + "]");

    StreamWriter writer = File.AppendText(@"C:\Users\kaykl\Documents\Schule\Info\Data\CarControle\data.txt");
    writer.WriteLine("[" + motorTorque + "," + maxSpeed + "," + steerAngle + "," + node + "," + time + "," + speed + "," + xPos + "," + zPos + "]");
    writer.Close();
    if (IsRunning == true)
    {
        StartCoroutine(Wait());
    }
    if (node == 0 && cancel == false)
    {
        cancel = true;
    }
    else if (node == 0 && cancel == true)
    {
        writer.Close();
    }

}