Mover 共享设置

avatar`
Yuewu(罗传月武)
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);
4
5 CommonLegacySettings = GetMoverComponent()->FindSharedSettings<UCommonLegacyMovementSettings>();
6 ensureMsgf(CommonLegacySettings, TEXT("Failed to find instance of CommonLegacyMovementSettings on %s. Movement may not function properly."), *GetPathNameSafe(this));
7}
8
9void UWalkingMode::OnUnregistered()
10{
11 CommonLegacySettings = nullptr;
12
13 Super::OnUnregistered();
14}

新增共享设置类型