跳转至

一帧内发生的事情

  1. OnBeginFrame 在一帧开始时, 委托 FCoreDelegates::OnBeginFrame 首先会被触发

  2. 计算DeltaTime

  3. 这一帧的DeltaTime会被计算. DeltaTime会作为参数传递给后续的Tick回调

  4. 处理UI事件

  5. UE会处理操作系统的输入事件, 并调用UI系统的各个回调函数
  6. 例如 OnKeyDown

  7. OnWorldTickStart

  8. FWorldDelegates::OnWorldTickStart 会被触发

  9. OnWorldPreActorTick

  10. FWorldDelegates::OnWorldPreActorTick 会被触发

  11. Actor::Tick

  12. 每个Actor会逐一进行Tick.
  13. 在蓝图中, 可使用 Tick Group 属性来进一步细分控制Tick顺序
  14. 可通过实现 Tick 来处理相关逻辑

  15. UGameInstance::TimerManger::Tick

  16. GameInstance上的 TimerManager::Tick 会被触发
  17. 在蓝图中, 可以使用 SetTimerByFunctionName 节点设置Timer

  18. OnWorldPostActorTick

  19. FWorldDelegates::OnWorldPostActorTick 会被触发

  20. 用户界面Tick

  21. 引擎会从根节点开始调用每个UserWidget的Tick
  22. 在控件蓝图中, 可通过实现Tick事件来处理相关逻辑

  23. 自增当前帧编号

  24. 引擎会自增 GFrameCounter, 更新当前帧编号
  25. 在蓝图中, 可通过 GetFrameCount 节点获得当前帧编号

  26. FTicker::Tick (UE5中是 FTSTicker::Tick)

  27. 引擎会触发Core Ticker.

  28. OnEndFrame

  29. 最后, 委托 FCoreDelegates::OnEndFrame 会被触发