跳转到内容
CRUSHFORMV1.1.0
在 Fab 上获取

参考子系统与库

UCFHostRegistry

模块Crushform头文件CFHostRegistry.h父类UWorldSubsystem

世界的宿主表:对于某个接口下的 Actor,由哪个对象负责应答,以及每帧宿主的车轮接触信息。若没有该表,Actor 会为自己应答,并且每次调用时都会重新收集接触信息。

函数

AUTHORITY · 服务器,每个端LOCAL · 本机PURE · 只读
void Register(const AActor& Actor, const UClass& Interface, UObject& Host)
C++ ONLY

使 Host 为 Actor 响应 Interface。当 Host 未实现 Interface 时,将被拒绝并输出错误日志。同一组合的第二个宿主会替换第一个,并输出一条同时点名两者的警告。重复注册同一宿主不会产生任何变化,也不输出日志。

void Unregister(const AActor& Actor, const UClass& Interface, const UObject& Host)
C++ ONLY

移除 Actor 与 Interface 的注册,但仅当其仍持有 Host 时才会移除。

UObject* FindHost(const AActor* Actor, const UClass& Interface)
C++ ONLY

为 Actor 注册的宿主;否则,若 Actor 自身实现了 Interface,则为 Actor 本身;否则为 null。没有注册表的世界(例如编辑器预览)会跳过第一步,但给出相同的结果。

const TArray<FCFWheelContact>& GetFrameWheelContacts(UObject& Host, TFunctionRef<void(TArray<FCFWheelContact>&)> Gather)
C++ ONLY

脚本化车轮宿主在本帧的接触列表:每个宿主在每个 GFrameCounter 内最多执行一次 Gather,同一帧的所有调用者都会获得同一个数组。没有注册表时,Gather 每次调用都会执行。