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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:24:56