ue4-定时器

  • c++ 和 蓝图 中定时器的使用
  • 之前有写过c++的,现在用 markdown 整理下c++和蓝图的

1. 蓝图中的使用


2. C++中的使用

  • 开始与清除

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    FTimerHandle	mTimer; //起个 handle

    auto lambda = [&]()->void {
    mLeftTime -= 1;

    if (mLeftTime < 5)
    GWorld->GetTimerManager().ClearTimer(mTimer); //停止并清除定时器
    };

    auto dlg = FTimerDelegate::CreateLambda(lambda); //动态代理的绑定,还有其他几种方式,下面有贴链接
    //auto dlg = FTimerDelegate::CreateUObject(this, &AMyActor::TimerCount);
    GWorld->GetTimerManager().SetTimer(mTimer, dlg, 1.0f, true);
  • 其他api

    1
    2
    3
    4
    5
    6
    7
    GWorld->GetTimerManager().PauseTimer(mTimer); //暂停
    GWorld->GetTimerManager().UnPauseTimer(mTimer); //唤醒
    float elapsed = GWorld->GetTimerManager().GetTimerElapsed(mTimer); //已逝时间
    float elapsed = GWorld->GetTimerManager().GetTimerRemaining(mTimer); //剩余时间
    bool isActive = GWorld->GetTimerManager().IsTimerActive(mTimer); //激活
    bool isPaused = GWorld->GetTimerManager().IsTimerPaused(mTimer); //暂停
    bool isExist = GWorld->GetTimerManager().TimerExists(mTimer); //存在
  • 动态代理绑定的参照这里:http://blog.csdn.net/yangxuan0261/article/details/52097699

  • 参考(貌似比较旧的api,不适4.14版本):https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/Timers/