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;
}
使用某种类型的结构体来存储数据,然后使用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,它很好很简单。
我不能保证我写的代码会完全正常工作,但它应该能给你指明正确的方向。