如何通过GUI按钮控制Unreal中Anim Blueprint的ENUM Blend Pose变量
解决User Widget控制Anim Blueprint枚举变量的问题
前提准备
先确认Anim Blueprint里的枚举变量设置正确:
- 变量必须创建在Anim Instance的图表中(不是Anim Blueprint的类默认值面板)
- 在变量的细节面板里勾选 Editable 和 Public,确保外部可以访问和修改
方法一:通过Level BP中转传递Anim Instance引用(最稳妥)
在User Widget蓝图中添加变量
- 新建一个变量,类型选择你的Anim Blueprint对应的Anim Instance类(比如你的Anim BP叫
ABP_Character,就选ABP_Character_C) - 把这个变量设为Public(细节面板里勾选Public)
- 新建一个变量,类型选择你的Anim Blueprint对应的Anim Instance类(比如你的Anim BP叫
Level BP中传递引用
- 获取你要控制的角色/动画所属的Actor,调用
Get Anim Instance节点拿到Anim Instance - 实例化User Widget后,用
Set [你刚才创建的Widget变量名]节点,把Anim Instance赋值给Widget的变量
- 获取你要控制的角色/动画所属的Actor,调用
Widget按钮绑定事件
- 回到Widget蓝图,选中按钮的
OnClicked事件 - 直接调用Widget里的Anim Instance变量,执行
Set [你的枚举变量名]节点,选择对应按钮要切换的枚举值即可
- 回到Widget蓝图,选中按钮的
方法二:Widget直接获取目标Actor的Anim Instance
在User Widget蓝图中添加变量
- 新建一个变量,类型选择你的角色Actor类(比如
Character或自定义的角色类) - 设为Public
- 新建一个变量,类型选择你的角色Actor类(比如
Level BP中传递Actor引用
- 实例化Widget时,把目标角色Actor赋值给这个Widget变量
按钮事件中设置枚举
- 在按钮
OnClicked事件里,先通过Actor变量调用Get Anim Instance拿到对应的Anim Instance - 再调用
Set [你的枚举变量名]节点,设置目标枚举值
- 在按钮
注意事项
- 确保所有涉及的枚举类型是同一个,不要出现类型不匹配的情况
- 如果Anim Instance是动态生成的,要确保获取到的引用是最新的,避免空引用报错
内容的提问来源于stack exchange,提问作者Tom Auger
相关产品推荐
相关产品推荐

