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

Unity MissingMethodException:找不到Player1Movement.OnJump方法问题求助

问题诊断与解决方案

这个异常的核心原因是Jump动作被重复绑定:你通过代码订阅了OnJump方法,同时在Input Action Asset的Inspector配置中也绑定了该方法,而Inspector绑定要求方法必须是public才能被反射调用,导致反射调用失败抛出异常,但代码内部的Lambda调用不受权限限制,所以OnJump实际能执行。

解决步骤

1. 移除Input Action Asset中的重复绑定

  • 打开你的.inputactions资源文件
  • 切换到Player动作组,找到Jump动作
  • 在右侧面板的Events区域,检查Performed事件列表,如果有绑定Player1Movement.OnJump,直接删除该条目
  • 保存资源,回到Unity编辑器测试

2. (可选)如果保留Inspector绑定,修改方法权限

如果你需要通过Inspector绑定事件而非代码订阅,将OnJump方法的访问修饰符改为public:

public void OnJump(InputAction.CallbackContext context)
{
    rbody.velocity = Vector2.up * jPower;
    Debug.Log(context);
}

同时删除代码中订阅Jump事件的代码:

// 删掉这一行
actions.FindActionMap("Player").FindAction("Jump").performed += (context) => OnJump(context);

3. 清理缓存并重新编译

  • 关闭Unity编辑器
  • 删除项目根目录下的Library和Temp文件夹
  • 重新打开Unity,等待自动编译完成后测试

补充说明

你的Debug日志显示OnJump确实被执行,是因为代码中的Lambda表达式是在类内部直接调用方法,不受private权限限制;而错误日志中的InvokeMember调用栈,是Unity尝试通过反射调用Inspector绑定的private方法时失败导致的。另外,按W/S触发异常,可能是你的Move动作配置中意外关联了Jump的事件绑定,检查时可以一并确认Move动作的Events配置是否正常。

内容的提问来源于stack exchange,提问作者Gatorz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:55:58