UWorld
在 Unreal Engine 中,GetWorld() 是一个常见的函数,用于获取当前对象所在的 UWorld 实例。
我们在之前的文章中已经了解了关卡,它包含各个 Actor 或组件。而世界就是关卡上一级的概念,即世界包含多个关卡。
引入世界这个概念的原因是,UWorld 包含了射线追踪的功能。不过在使用射线追踪功能之前,我们先从获取游戏时间信息样例,了解一下如何使用 UWorld。
我们在之前添加的 UGrabber 组件里实验。如代码清单 1 所示,在组件中我们可以直接调用 GetWorld() 来获取到世界对象。访问其 TimeSeconds 属性,我们可以获取当前游戏时间。将其打印进行查看。
- #include "Engine/World.h"
- // Called every frame
- void UGrabber::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
- {
- Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
- float Time = GetWorld()->TimeSeconds;
- UE_LOG(LogTemp, Display, TEXT("Current Time Is: %f"), Time);
- }
如图 1 所示,我们运行程序,从打印信息中我们可以看到游戏时间的流逝。暂停程序,游戏时间也同样暂停;恢复运行,游戏时间从暂停那会继续递增。
