c#读写对象名和对象坐标位置

本文关键字:对象 坐标 位置 读写 | 更新日期: 2023-09-27 18:02:45

我正在做一些动画,逐帧记录对象位置。我想保存frameo, objectname和对象坐标位置x,y,z到文本文件,我可以检索数据。实现它的最佳方式是什么?

    palmTimer-=Time.time;
        if(palmTimer <= 0)
        {
            palmFrame +=1;
            Debug.Log (palmFrame);
            Debug.Log (palmObject);
            Debug.Log (palmObject.transform.localPosition);
            palmTimer =180.0f;
        }

c#读写对象名和对象坐标位置

使用某种类型的结构体来存储数据,然后使用XML或JSON序列化器将数据存储并检索到结构体数组中。

struct FrameData
{
    public int FrameNumber;
    public string ObjectName;
    public int X, Y, Z;
    public FrameData(int frameNumber, string objectName, int x, int y, int z)
    {
        this.FrameNumber = frameNumber; this.ObjectName = objectName; this.X = x;
        this.Y = y; this.Z = z;
    }
}

在每一帧,将数据存储到一个新的FrameData对象中,并将其放入数组或列表中。完成后,使用序列化器对数据进行序列化。

XmlSerializer serializer = new XmlSerializer(typeof(FrameData[]));
using (FileStream fs = File.Open(filepath, FileMode.Create))
{
    serializer.Serialize(fs, frameDataArray);
}

然后再次获取数据:

XmlSerializer serializer = new XmlSerializer(typeof(FrameData[]));
FrameData[] frameDataArray;
using (FileStream fs = File.Open(filepath, FileMode.Open))
{
    frameDataArray = (FrameData[])serializer.Deserialize(fs);
}

如果XML序列化占用太多空间,您可以尝试使用JSON代替。有很多在线资源可以教你JSON序列化/反序列化,它与XML版本非常相似。我建议使用Nuget库JSON。. NET,它很好很简单。

我不能保证我写的代码会完全正常工作,但它应该能给你指明正确的方向。