我正在考慮一個小問題,並會欣賞人們的意見。
我正在爲一個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