Я запускаю таймер в начале моей программы с:
GetWorldTimerManager().SetTimer(MyTimerHandle, this, &AMyGameMode::SetNextMatchState, 1.0f, true, 0.0f);
MyTimerHandle - это закрытая переменная в моем GameMode.
Вызывает соответствующую функцию каждую секунду и проверяет, должна ли игра перейти в следующее состояние. Это прекрасно работает, пока я не начну уничтожать актеров со сцены. С этого момента обратный вызов больше не вызывается. Мой вызов уничтожения выглядит так:
Destroy(Cast<AMyPlayerState>(gameState->PlayerArray[i])->MyUnitList.Pop());
Так что я не удаляю таймер. А поскольку «Уничтожить (...)» помечает только актера, который должен быть уничтожен GC в ближайшем будущем, я предполагаю, что GC также удаляет мой таймер, что, очевидно, не то, что я намеревался.
Так как я могу предотвратить, чтобы ГХ уничтожил мой таймер (если это причина, почему таймер перестает работать)?