Mover 共享设置

Updated: May 28, 2025
介绍
Mover是模块化,且数据驱动的。每一种运动模式可以包含仅用于该模式的相关设置,并存在于运动模式实例本身。
但通常情况下,多个运动模式之间也会共享一些设置。
本节内容主要讨论运动模式和共享设置之间的关系,以及共享设置的创建和使用原则。
配置共享设置
每一个运动模式可以在其SharedSettingsClasses
字段上指定它所需的共享设置类型,当你编辑完MovementModes
后,MoverComponent
上的SharedSettings
数组会根据MovementModes
的配置自动刷新。
如果SharedSettingsClasses
存在某一类设置没有被任何运动模式所使用,那么它会自动从数组当中移除。
你可以查看UMoverComponent::RefreshSharedSettings()
了解具体逻辑。
使用共享设置
每一个运动模式都可以实现OnRegisterd和OnUnregisterd,并在这个时候通过MoverComponent拿到对应的共享设置并缓存起来,以供在该模式下的其他逻辑中使用。
1 TObjectPtr<const UCommonLegacyMovementSettings> CommonLegacySettings;
1void UWalkingMode::OnRegistered(const FName ModeName)2{3 Super::OnRegistered(ModeName);45 CommonLegacySettings = GetMoverComponent()->FindSharedSettings<UCommonLegacyMovementSettings>();6 ensureMsgf(CommonLegacySettings, TEXT("Failed to find instance of CommonLegacyMovementSettings on %s. Movement may not function properly."), *GetPathNameSafe(this));7}89void UWalkingMode::OnUnregistered()10{11 CommonLegacySettings = nullptr;1213 Super::OnUnregistered();14}