UWorld

在 Unreal Engine 中,GetWorld() 是一个常见的函数,用于获取当前对象所在的 UWorld 实例。

我们在之前的文章中已经了解了关卡,它包含各个 Actor 或组件。而世界就是关卡上一级的概念,即世界包含多个关卡。

引入世界这个概念的原因是,UWorld 包含了射线追踪的功能。不过在使用射线追踪功能之前,我们先从获取游戏时间信息样例,了解一下如何使用 UWorld。

我们在之前添加的 UGrabber 组件里实验。如代码清单 1 所示,在组件中我们可以直接调用 GetWorld() 来获取到世界对象。访问其 TimeSeconds 属性,我们可以获取当前游戏时间。将其打印进行查看。

代码清单 1 游戏时间
  1. #include "Engine/World.h"
  2.  
  3. // Called every frame
  4. void UGrabber::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
  5. {
  6.     Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
  7.  
  8.     float Time = GetWorld()->TimeSeconds;
  9.     UE_LOG(LogTemp, Display, TEXT("Current Time Is: %f"), Time);
  10. }

如图 1 所示,我们运行程序,从打印信息中我们可以看到游戏时间的流逝。暂停程序,游戏时间也同样暂停;恢复运行,游戏时间从暂停那会继续递增。

图1 时间打印