如何让新绑定的InputAction触发已有持有的输入值回调?
解决方案
没法靠单纯配置解决,必须手动补逻辑处理,给你两种常用的实现方式:
方法一:绑定后主动检查并触发回调
绑定完performed回调后,直接读取当前输入值,如果符合触发条件(比如你说的达到1f),手动调用你的业务函数:
// 先绑定回调 inputAction.performed += ctx => Function(ctx.ReadValue<float>()); // 手动触发初始状态的回调 var currentValue = inputAction.ReadValue<float>(); if (currentValue >= 1f) // 根据你的实际输入阈值调整判断条件 { Function(currentValue); }
方法二:模拟触发一次performed事件
如果你的业务函数依赖InputActionContext的其他信息,可以手动触发一次performed事件:
inputAction.performed += ctx => Function(ctx.ReadValue<float>()); // 先判断当前输入状态,符合条件再模拟触发 var currentValue = inputAction.ReadValue<float>(); if (currentValue >= 1f) { inputAction.Trigger(); }
注意:Trigger()会直接触发performed回调,所以一定要先判断输入状态,避免无输入时误触发。
如果你的需求是持续按住期间每帧都执行回调,performed回调满足不了(它只在输入状态变化时触发),这种情况得改用Update里轮询读取输入值,或者结合started回调开启协程/定时器持续执行。
内容的提问来源于stack exchange,提问作者GuillemVS
相关产品推荐
相关产品推荐

