VSCode仅报UnityEngine.InputSystem命名空间缺失错误 编辑器编译正常
Unity切换VSCode后InputSystem命名空间报错解决方案
The type or namespace name 'InputSystem' does not exist in the namespace 'UnityEngine' (are you missing an assembly reference?) [Assembly-CSharp]
该报错是VSCode的C#扩展未正确识别Unity生成的程序集引用导致,不影响项目实际构建运行,按照以下步骤处理即可:
第一步:调整Unity侧项目文件生成规则
- 打开Unity编辑器,进入
编辑 > 首选项 > 外部工具页 - 外部脚本编辑器下拉栏选择你本地安装的VSCode本体,不要选择「按文件扩展名打开」
- 勾选「生成.csproj文件」分类下的注册表包、内置包、本地包三个选项,未勾选时Unity不会将Package Manager安装的包程序集写入生成的项目文件
- 点击「重新生成项目文件」按钮,等待Unity执行完成
第二步:调整VSCode侧插件配置
- 卸载VSCode中旧版的
C#(OmniSharp)插件,安装官方最新的C# Dev Kit和Unity扩展 - 打开VSCode设置,搜索
omnisharp.useModernNet,取消该选项的勾选,Unity使用的.NET Framework兼容模式无法被现代.NET运行时识别 - 完全关闭所有VSCode窗口,回到Unity编辑器内双击打开任意C#脚本,触发扩展自动加载项目配置
第三步:可选排查项
如果完成上述操作后仍有报错,执行以下检查:
- 打开项目根目录下的Assembly-CSharp.csproj文件,搜索
Unity.InputSystem,确认存在对应程序集的引用配置,不存在则回到第一步重新生成项目文件 - 进入Unity
编辑 > 项目设置 > 玩家 > 其他设置 > 配置页,确认「活动输入处理」选项选择的是输入系统包(新)或两者,不要仅选择旧输入管理器
内容的提问来源于stack exchange,提问作者C. Keats
相关产品推荐
相关产品推荐

