You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UE5 LyraStarterGame中ULyraWeaponStateComponent添加至控制器的实现方式问询

UE5 LyraStarterGame中ULyraWeaponStateComponent添加至控制器的实现方式问询

嘿,刚好我之前啃Lyra源码的时候碰到过类似的困惑,给你梳理下这个组件到底是怎么悄悄加到控制器里的~

首先,你说在C++和自己的蓝图里没找到创建逻辑,大概率是没找对地方,下面几种情况可以挨个排查:

  • 父类PlayerController的C++构造函数默认创建
    Lyra的核心PlayerController类(比如ALyraPlayerController或者它的基类ALyraPlayerControllerBase)里,可能在构造函数中用CreateDefaultSubobject<ULyraWeaponStateComponent>创建了这个组件作为默认子对象。因为你的自定义Controller是继承自这个核心类的,所以组件会自动继承过来,你在自己的子类代码里自然看不到创建逻辑。可以去Lyra的源码里搜这个组件的类名,找有没有在Controller类的构造函数里被初始化的代码。

  • 父蓝图中已添加该组件
    如果你的PlayerController是用蓝图做的,而且继承自Lyra的默认PlayerController蓝图(比如BP_LyraPlayerController),那这个父蓝图里可能已经添加了ULyraWeaponStateComponent。你可以打开自己的Controller蓝图,切换到Components面板,点击面板上方的Show Inherited按钮(就是那个带箭头的图标),就能看到父类里继承过来的组件了,说不定这个组件就在里面。

  • Gameplay Ability System初始化时动态添加
    Lyra的Gameplay Ability框架有不少自动注册逻辑,这个组件也可能是在Ability System初始化的时候被动态添加的。比如在ULyraAbilitySystemComponent的InitAbilityActorInfo方法里,可能会调用AddComponentByClass<ULyraWeaponStateComponent>这类代码,把组件挂载到Controller上。你可以去搜这个方法的实现,看看有没有相关的组件添加逻辑。

给你个小技巧:直接在Lyra的源码工程里全局搜索ULyraWeaponStateComponent,找所有包含CreateDefaultSubobject或者AddComponent的代码行,很快就能定位到它的创建位置啦。

备注:内容来源于stack exchange,提问作者김진우

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:18:13