我正在考虑一个小问题,并会欣赏人们的意见。
我正在为一个C++粒子模拟库制作Unity的C#插件。我想要一种方式来表示系统中的所有粒子,以便最终用户可以轻松访问数据。目前,每个粒子通过像这样一个结构来表示..C#寻找一个灵活的数据结构
public struct Particle
{
public Vector3 Position;
public Color _Color;
public float Age;
public float Weight;
public Vector3 Velocity;
public int UserData
}
我有问题这是然而,在大多数情况下,你会不会刻意从模拟检索所有信息的提供的结构。例如,您可能只想检索每帧的位置和颜色信息以提高性能。在这种情况下,我的结构将有很多未初始化的字段+将占用更多的内存比它需要(将有1000年的btw) 我不能使用类的hieratchy任何字段组合可能会在不同情况下使用。
一种方法我没想到的是这个..
public struct Particle
{
public Dictionary<string,object> Data;
}
创建他们看起来是这样的..
Particle parttest = new Particle{Data = new Dictionary<string,object>()};
parttest.Data.Add("Position",(object)Vector3.one);
parttest.Data.Add("Weight",(object)1.8745f);
,在读取时它们转换回相应的类。 因此,我可以拥有一个包含其中的仅包含颜色,重量和位置数据的粒子,而不包含其他任何内容。 你认为呢?
至少可以使类的类型吧。 – 2014-10-06 11:10:12
使用类,子类,接口等来分割你的“结构”分成小段 – 2014-10-06 11:11:34
你实际运行的内存不足,或者只是过早优化?我会说拳击将是你的第二种方法的问题。 – juharr 2014-10-06 11:13:57