标签
在 Unreal Engine 中 Tag 是一种轻量级的标签系统,用于给对象打标记,类似于“关键字”。
在这篇文章中,我们把标签用于触发器过滤。
如图 1 所示,我们选中雕塑 Actor,然后在细节窗体中,找到 标签 属性。可以看到每个 Actor 可以拥有多个标签。此处这个雕塑用于解锁第一道门,所以我们为其添加 “Unlock1” 标签。

在 C++ 侧,我们可以使用 AActor::ActorHasTag() 函数,判断当前 Actor 是否拥有指定的标签。
- bool AActor::ActorHasTag(FName Tag) const;
我们回到 Box 组件中,修改重叠检测的逻辑。如代码清单 1 所示,现在只有重叠的 Actor 下有指定标签,才会触发日志打印。
AcceptableActorTag 变量是使用 UPROPERTY() 宏、可以在编辑器中指定的变量。目的是为了此 Box 组件具有复用性,因为后续我们会将其附加到别的 Actor 上,并使用别的 Actor 解锁。
- // Called every frame
- void UTriggerComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
- {
- Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
- TArray<AActor*> Actors;
- GetOverlappingActors(Actors);
- for (int32 i = 0; i < Actors.Num(); i++)
- {
- if (Actors[i]->ActorHasTag(AcceptableActorTag))
- UE_LOG(LogTemp, Display, TEXT("Unlocking"));
- }
- }