Я думаю, что я пытаюсь использовать неправильный подход, поэтому, пожалуйста, скажите мне, если то, что я пытаюсь достичь, не будет работать с этой "техникой".
У меня есть объект с именем Spawner, который порождает KillerObjectsкаждые X мс, когда я хочу, чтобы объект KillerObject был уничтожен, я вызываю:
void Spawner::RemoveKillerObject(KillerObject* removeThis)
{
garbageList.push_back(removeThis);
}
Затем каждый раз, когда обновляется Spawner, он будет циклически перебирать список мусора, чтобы удалить каждый объект, который был помещен в список мусора, напримерthis:
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.
Объекты «удаляются» в игре, так как в «Я не могу столкнуться»с ними, и они не будут нарисованы.Но это приводит к постоянному росту использования моей памяти, я знаю, что это является причиной, потому что, если я удаляю этот код, использование памяти остается стабильным.
Точка в правильном направлении или любая другая помощь очень ценятся.
С уважением
Маркус