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

Unity使用Input类报无GetButton定义,需加UnityEngine前缀如何解决?

问题成因

该问题本质是命名空间冲突,由安装过新Unity Input System包未完全清理导致:

  • 新Input System包自带的命名空间下存在同名Input类,编译器默认优先匹配该类,而新Input类本身没有GetButton、GetButtonDown这类旧输入系统的API,因此会抛出找不到定义的错误。
  • 手动添加UnityEngine.前缀后,相当于明确告知编译器调用的是UnityEngine根命名空间下的旧输入系统Input类,因此可以正常运行。
彻底解决方案

根据使用需求选择对应方案即可:

  • 方案1:完全切回旧输入系统,不需要新Input System
    1. 打开顶部菜单Window > Package Manager,在已安装包列表中找到Input System,点击Remove卸载该包
    2. 打开Edit > Project Settings > Player,在Other Settings中找到Active Input Handling选项,选择Input Manager (Old),重启Unity即可,后续调用Input类不需要再加前缀。
  • 方案2:需要同时使用新旧两套输入系统
    1. 打开Edit > Project Settings > Player,在Other Settings中找到Active Input Handling选项,选择Both
    2. 在需要调用旧输入系统的代码文件顶部添加别名定义,示例如下:
    using UnityEngine;
    // 给旧Input类定义别名避免冲突
    using OldInput = UnityEngine.Input;
    
    public class YourScript : MonoBehaviour
    {
        void Update()
        {
            if (OldInput.GetButtonDown("Button"))
            {
                // 你的逻辑
            }
        }
    }
    
  • 方案3:卸载新Input System后仍有报错
    检查项目中是否存在自定义的、命名为Input的类,如果有修改该类的名称即可解决冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:57:00