我正在分析LyraGameplayAbility_RangedWeapon来研究LyraStarterGame的武器攻击能力。我确认武器攻击的服务器-客户端预测功能位于 ULyraWeaponStateComponent 中,但我不知道如何将此组件添加到控制器中。 C++代码中没有组件创建部分,蓝图中甚至没有使用该组件。但是,当我使用 FindComponentsByClass 节点检查 ULyraWeaponStateComponent 是否存在时,它始终存在于控制器中。该组件不是在 C++ 代码或蓝图中使用或创建的,但我很好奇该组件是如何添加到控制器中的。
GameFeaturePlugins
,如果/需要时会在运行时加载。
加载
GameFeaturePlugins
时,它们通常会执行 GameFeatureActions
定义中定义的多个
GameFeatureData
(或者在 Lyra 的情况下,也是 LyraExperienceDefinition
)。
当
ShooterCore
GameFeaturePlugin
加载时,它会执行一个 GameFeatureAction
,将 ULyraWeaponStateComponent
注入每个 AController
,包括玩家和机器人。
在 C++ 中找不到发生这种情况的原因是因为 C++ 中没有定义这些。 它全部在
UDataAsset
文件夹中的 Content
二进制文件中定义(在本例中具体是 UGameFeatureData
资产)。
要查看配置,您必须启动
UnrealEditor
,打开 LyraStarterGame
项目,然后打开:Plugins / ShooterCore Content / ShooterCore
在该数据资产中,您将看到一个
Actions
数组,展开该数组以查看 Add Components
操作,展开该数组以查看所有已注入组件的列表,在该列表中您将看到 ULyraWeaponStateComponent
被注入到客户端和服务器上的所有AController
。
有关 Lyra 体验如何运作的更多信息,请参阅: