我在iOS游戏中有一个世界方块的自定义结构。我想在一个数组中存储多个WorldTile
,但我不确定最有效的方法是什么。这是一个无限地图风格的游戏,我只在玩家周围加载块,所以我想要以最快的方式存储数据。
我可以将它存储在基于c的多维数组(WorldTile tiles[16][16]
)中,但是我没有办法让它成为@property
以便更容易在课外访问,或者我可以{{ 3}}并存储在NSArray
中,但这似乎是我不需要的开销。
typedef struct {
b2Vec2 coord;
float height;
float temperature;
} WorldTile;
如何将多维数组存储为@property
,或者使用NSValue包装它的性能成本不是很大?
答案 0 :(得分:2)
我认为问题在于“我不需要开销”。首先尝试使用对象,根据经验确定性能问题,然后调整对象,然后求助于C(然后会惊讶于你所担心的对象开销并不像上个世纪那么大。)。
OO方式是World
是单数的,但其中包含一系列内容。这是Things
的NSArray。反过来,这些东西可能包含其他东西的集合,因此Thing的NSArray属性为OtherThings
。实现了多维度,但更重要的是,实现了面向对象。
世界是巨大的吗?它应该只基于与玩家的接近度来构建?没关系。事情可以被设计成只是存根 - 事物,它只知道位置,但在用户变得近端时自己初始化。您将能够更好地理解并优化此代码。通过这种方式,面向对象的系统将会更快,因为它可以让你在不进行心理体操的情况下提供更快的设计的表现力。