これは非常に単純で、ほとんどばかげた質問だと思います。どうすればいいのかを忘れてしまったのです。
ユニバーサル GameObjectManager に格納されているゲームオブジェクトがあります。これらのゲームオブジェクトには、単純な int である ObjectID があります。
各タイルが ObjectID のコンテナーを保持する 2D タイル ベースの世界で、これらのゲームオブジェクトを挿入または削除できる必要があります。
このようにして、特定のタイル (例: Tile[10][10]) を取得し、コンテナーから読み取ることで、Tile[10][10] にあるゲームオブジェクトを確認できます。(ex. 「あ、キャラ#4302とアイテム#123がタイル[10][10]にある!」)
現在、各「タイル」は、タイルの MAP 配列内の構造です。
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 を呼び出して、配列内のどこからでも削除する必要があります。
このため、別の容器を使用することを考えていました。疲れすぎているのかもしれませんが、どのコンテナーを使用するか、およびコンテナー内の SPECIFIC 変数を削除する方法についてアドバイスを提供できます。
たとえば、GameObject の ObjectID は「422」です。Tile[2][8] は、420、421、422、433、486、800 の整数を順番に持つコンテナーを保持します。
関数があります: RemoveGameObjectFromMap(int ObjectID); そのため、(RemoveGameObjectFromMap(422); と入力するたびに 422 を削除する必要があります。
以前は MAP コンテナーを使用していましたが、それは不要です。cplusplus.comによると、Vectorはこれには悪いでしょう。