C# 将游戏内数据导出到Unity中的csv

C# 将游戏内数据导出到Unity中的csv,c#,csv,unity3d,export,C#,Csv,Unity3d,Export,我想将我的计数器数据和时间导出为csv文件,然后我将用它们制作一个2D图形。我如何将这些记录并写入csv文件?你的问题很广泛,但今天我有心情^^ 据我所知,你实际上在问以下问题: 如何使用时间值存储计数器值? 我会使用合适的类型,例如 [Serializable] public class KeyFrame { public int Value; public float Time; public KeyFrame(){} public KeyFrame (i

我想将我的计数器数据和时间导出为csv文件,然后我将用它们制作一个2D图形。我如何将这些记录并写入csv文件?

你的问题很广泛,但今天我有心情^^

据我所知,你实际上在问以下问题:

如何使用时间值存储计数器值?

我会使用合适的类型,例如

[Serializable]
public class KeyFrame
{
    public int Value;
    public float Time;

    public KeyFrame(){}

    public KeyFrame (int value, float time)
    {
        Value = value;
        Time = time;
    }
}

private List<KeyFrame> keyFrames = new List<KeyFrame>(10000);
Time,Value
0,0
2.288847,1
4.2887477,2
...
现在每次你这样做

Counter++;
具有当前

自应用程序启动以来的时间(秒)

已添加到列表中,因此您还应使用
0

private void Start ()
{
    Counter = 0;
}

如何从给定的二维坐标集创建CSV内容?

这将创建一个字符串,例如

[Serializable]
public class KeyFrame
{
    public int Value;
    public float Time;

    public KeyFrame(){}

    public KeyFrame (int value, float time)
    {
        Value = value;
        Time = time;
    }
}

private List<KeyFrame> keyFrames = new List<KeyFrame>(10000);
Time,Value
0,0
2.288847,1
4.2887477,2
...

如何写入文件?

通常,您还应该在编辑器中写入

例如,你可以使用 或者仅仅使用


那么问题到底是什么呢?如何存储二维坐标?如何从给定的一组二维坐标创建CSV内容?或者我该如何写入文件?这帮了大忙,非常感谢。
sb.Append('/n')
这个正斜杠应该是反斜杠:)@PremierBromanov这是真的,谢谢;)这同样适用于
/“
,它应该是
\”
;)
#if UNITY_EDITOR
using UnityEditor;
#endif

...

public void SaveToFile ()
{
    // Use the CSV generation from before
    var content = ToCSV();

    // The target file path e.g.
#if UNITY_EDITOR
    var folder = Application.streamingAssetsPath;

    if(! Directory.Exists(folder) Directory.CreateDirectory(folder);
#else
    var folder = Application.persistentDataPath;
#endif

    var filePath = Path.Combine(folder, "export.csv");

    using(var writer = new StreamWriter(filePath, false))
    {
        writer.Write(content);
    }

    // Or just
    //File.WriteAllText(content);

    Debug.Log($"CSV file written to \"{filePath}\"");

#if UNITY_EDITOR
    AssetDatabase.Refresh();
#endif
}