ue 蓝图的IA BindAction

自定义的类型想要在蓝图上通过IA的方式进行输入调用函数,直接蓝图上IA_节点不会触发,在userwidget 上IA_ 节点会生效

UI 上绑定IA 是在UUserWidget 的NativeOnInitialized 函数中

UInputDelegateBinding::BindInputDelegates(GetClass(),PC->InputComponent,this);

把当前对象的蓝图IA 绑定事件注册到输入组件中

蓝图上IA_ 每个事件会生成一个输入绑定的对象,在BindInputDelegates 中遍历这些IA 进行BindAction 绑定

UEnhancedPlayerInput::EvaluateInputDelegates 里面负责输入事件管理

Enhanced 会存储按键状态数据,每帧根据按键变化触发事件,记录要触发的IA_Action

InputComponentStack 负责栈式管理输入组件,如果一个组件消费事件,就不会往下层传递。

遍历绑定的数据,判断是否有Action事件,有就调用绑定的对象的委托函数

注意:

UInputDelegateBinding::BindInputDelegatesWithSubobjects (Actor, InputComponent)

这个函数绑定的委托是绑定Actor 蓝图上的IA到 InputComponent->GetOwner 上。如果Owner 不是Actor 类型会导致事件无法触发

绑定的话底层其实就是记录对象和函数名,通过方式调用具体的函数,如果类型上没有函数会无法执行成功。

DebugKey 的绑定方法是在 UInputDebugKeyDelegateBinding::BindToInputComponent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值