我爲一個roguelike類型的遊戲創建了一個地圖系統,並且我問我瓷磚最好有哪一個大對象存儲項目,地形......或者我將它們分隔成多個對象。一個大對象或多個小對象
一個例子是比較容易理解:
一個大類:
class Tile {
unsigned char flags;
Terrain *terrain;
std::vector<Item> items;
std::vector<Object> objects;
};
class Map {
Tile tiles[100][100];
};
或多個小的:
class Map {
unsigned char flags[100][100];
Terrain terrains[100][100];
std::vector<Item> items[100][100];
std::vector<Object> objects[100][100];
};
有沒有在性能負載較小的對象長期任何優勢? 大部分時間我不需要訪問同一個地方的所有列表。 感謝您的幫助。
就個人而言,我會使用第一個。 – NathanOliver
我不認爲沒有學習使用模型就可以回答。當然你希望有一個邏輯對象來收集'Tile'數據,但是如果你多次迭代某些屬性,你可能想要讓它們在內存中連續排列。你也可能想要有多個視圖,並且所有這些屬性都將是共享資源......再次難以分辨。在大多數情況下,第一個是首選的好設計。 – luk32