Я думаю, что здесь я пытаюсь использовать неправильный подход, поэтому, пожалуйста, скажите мне, если то, что я пытаюсь достичь, не сработает с этой "техникой" .
У меня есть объект с именем Spawner, который порождает KillerObjects каждые X мс, когда я хочу, чтобы KillerObject был уничтожен, я вызываю:
void Spawner::RemoveKillerObject(KillerObject* removeThis)
{
garbageList.push_back(removeThis);
}
Затем каждый раз, когда Spawner обновляется, он будет перебирать список мусора, чтобы удалить каждый объект, который был отправлен в список мусора, например:
void Spawner::Update(float elapsedTime)
{
elapsedSince += elapsedTime;
if (elapsedSince > spawnRate)
{
Spawn();
elapsedSince = 0;
}
for each (KillerObject* removeThis in garbageList)
{
spawnedObjects.remove(removeThis);
}
garbageList.clear();
for each (KillerObject* ko in spawnedObjects)
{
ko->Update(elapsedTime);
}
}
Spawn просто создает указатель на KillerObject и помещает его в список spawnedObject.
Объекты "удаляются" в игре, так как я не могу столкнуться с ними, и они не будут нарисованы. Но это приводит к постоянному увеличению использования моей памяти, я знаю, что это причина потому что, если я удалю этот код, использование памяти будет стабильным.
Мы очень ценим указание в правильном направлении или любую другую помощь.
С уважением
Маркус