Unity Input System绑定OpenInventory报错:无法转换void为Action<CallbackContext>
问题解决:Unity Input System 回调绑定类型不匹配错误
错误原因
你遇到的Cannot implicitly convert type 'void' to 'System.Action<UnityEngine.InputSystem.InputAction.CallbackContext>'错误,核心原因是Input System的performed回调要求绑定的方法必须接收一个InputAction.CallbackContext类型的参数,而你的OpenInventory()是无参的void方法,签名不匹配导致无法转换。
系统升级到Windows 11不是直接诱因,大概率是Unity或Input System版本更新后,回调机制的要求更严格了(之前的旧版本可能允许无参方法绑定)。
两种解决方法
方法1:修改目标方法的签名
直接给OpenInventory()添加InputAction.CallbackContext参数,让它符合回调要求:
public void OpenInventory(InputAction.CallbackContext context) { // 原来的背包打开逻辑代码 }
之后绑定回调的代码就可以正常使用:
// 假设你的输入动作变量是inventoryOpenAction inventoryOpenAction.performed += OpenInventory;
方法2:用Lambda表达式包裹无参方法
如果不想修改原方法的签名,可以用Lambda表达式做一层包装,适配回调要求:
inventoryOpenAction.performed += context => OpenInventory();
这样就能完成回调绑定,解决类型不匹配的问题。
内容的提问来源于stack exchange,提问作者Tecleanu Ionut
相关产品推荐
相关产品推荐

