防止计时器垃圾回收

时间:2019-03-31 12:13:23

标签: c++ unreal-engine4

我正在使用以下程序在程序的开头启动计时器:

GetWorldTimerManager().SetTimer(MyTimerHandle, this, &AMyGameMode::SetNextMatchState, 1.0f, true, 0.0f);

MyTimerHandle是我的GameMode中的私有变量。

这每秒调用一次相应的功能,并检查游戏是否应该进入下一个状态。直到我开始从场景中销毁演员之前,它的工作情况都非常好。从那时起,将不再调用回调。我的销毁呼叫看起来像这样:

Destroy(Cast<AMyPlayerState>(gameState->PlayerArray[i])->MyUnitList.Pop());

所以我没有删除计时器。而且由于“ Destroy(...)”仅标志着一个演员将在不久的将来被GC销毁,因此我认为GC也将删除我的计时器,这显然不是我想要的。

那么如何防止GC破坏计时器(假设这是计时器停止工作的原因)?

1 个答案:

答案 0 :(得分:1)

您是否正在加载新地图?加载地图,旅行...

因为这将创建一个新的世界,它具有自己的新计时器管理器,这将使您的计时器被禁用。

在这种情况下,您应该使用游戏实例中的计时器管理器而不是世界