命名空间“UnityEngine”中不存在统一类型或命名空间名称“InputSystem”

Kok*_*oko 7 unity-game-engine visual-studio-code

我已经在我的 Unity 项目中安装了新的 InputSystem 包。我已在 Unity 播放器设置中将输入设置为“新输入系统”。我已经退出并重新启动了 Unity 和 VS Code。

但是当我尝试在 VS Code 中使用该系统时,我立即收到此错误:

using UnityEngine;
using System.Collections;
using UnityEngine.InputSystem;              // <-error
using UnityEngine.InputSystem.Controls;     // <-error
Run Code Online (Sandbox Code Playgroud)

命名空间“UnityEngine”中不存在类型或命名空间名称“InputSystem”(您是否缺少程序集引用?)[Assembly-CSharp]

我该怎么做才能让 VS Code 识别 Unity InputSystem 包?

Ale*_*lex 21

这个问题有多种原因

我有一个现有的程序集定义,需要对Unity.InputSystem 的程序集定义引用

项目视图中的装配体定义

我在“脚本”检查器中添加了对Unity.InputSystem 的程序集定义引用

检查器中的程序集定义,引用了 Unity.InputSystem

重建有 0 个错误。


小智 13

您需要安装该软件包。转到 Windows/包管理器。搜索输入系统并按安装确认重新启动并替换旧的输入系统。

  • 我这样做了:)我在我的问题中提到了这一点:)但它确实有助于重新启动几次并手动设置播放器设置。不知何故,询问您是否要切换到新系统的对话框永远不会出现。 (6认同)

anu*_*ula 11

问题是当您安装新包时,新包所需的 .csproj 文件(VSCode 需要它们来理解可用库)不是自动生成的(这对我来说也没有发生,也许是故意手动的) .

转到Edit -> Preferences...然后单击External Tools。您需要勾选该框Generate .csproj files for: Registry packages(以及您可能想要的任何其他框),然后单击Regenerate project files

Unity 首选项对话框的屏幕截图

这应该会生成 VSCode 识别新包所需的任何内容 - 您甚至不需要重新启动它。

  • 工作完美 - 谢谢。我什至不需要重新启动 VS Code (3认同)
  • @Flippi - 看来你是对的,我也不需要重新启动。更新了答案 (3认同)
  • 仅当依赖关系确实需要解决时,这才有效。如果重新生成对您没有任何帮助,请确保首先从包管理器安装输入系统。 (3认同)

Pfi*_*nnn 11

如果在 Unity 尝试解决新输入系统的依赖关系时出现错误。请按照以下步骤操作,它应该可以工作: 仅当您实际安装了输入系统时,重新生成项目才有效。

  1. 安装输入系统(Windows > 包管理器)

在此输入图像描述

  1. 将项目设置为新的输入系统(项目设置 > 播放器 > 输入系统)

在此输入图像描述

  1. 重新生成项目文件

像建议的其他答案一样,尝试重新生成项目文件。仅当前面的步骤成功时,这才有效。

在此输入图像描述


Azh*_*ali 5

选择您的输入操作资源,然后从检查器窗口中打开“生成 C# 类”,然后单击“应用”以生成 C# 脚本文件。