我觉得这是一个非常简单,几乎是愚蠢的问题。我只是忘记了我应该知道该怎么做。
我有 GameObjects,它们存储在通用 GameObjectManager 中。这些游戏对象有一个 ObjectID,它是一个简单的 int。
我需要能够在基于 2D 瓦片的世界中插入或删除这些游戏对象,其中每个瓦片都包含一个 ObjectID 容器。
这样,我可以抓取一个特定的图块(例如 Tile[10][10]),然后通过从容器中读取来查看 Tile[10][10] 上的游戏对象。(例如“啊,所以 Character#4302 和 Item#123 在 Tile[10][10] 上!”)
现在,每个“Tile”都是 MAP 的 Tiles 数组中的一个结构。
struct MapTile
{
std::vector <int> GameObject_MapList ; //list of Objects on this map location
TileTerrainType tileTerrainType; //GFX to display Grass, Sand, Water, Swamp, etc.
};
MapTile mlMap[100][100]; //map array
但是,我读到在任意添加/删除变量时不应使用向量。我不会删除数组中的第一个或最后一个变量。相反,我将不得不调用特定的 ObjectID 并将其从数组中的任何位置删除。
出于这个原因,我正在考虑使用不同的容器。也许我太累了,但我可以就使用什么容器以及如何删除容器中的特定变量提出一些建议。
例如,GameObject 的 ObjectID 为“422”。Tile[2][8] 包含一个容器,该容器按顺序具有以下整数:420、421、422、433、486、800。
我有一个函数: RemoveGameObjectFromMap(int ObjectID); 所以我需要它来删除 422,每当我输入 (RemoveGameObjectFromMap(422);
我曾经使用 MAP 容器,但这是不必要的。根据 cplusplus.com 的说法,Vector 对此会不利。