Unity-Typ oder Namespace-Name 'InputSystem' ist im Namespace 'UnityEngine' nicht vorhanden.
Ich habe das neue InputSystem-Paket in meinem Unity-Projekt installiert. Ich habe die Eingabe in den Unity Player-Einstellungen auf "Neues Eingabesystem" gesetzt. Ich habe sowohl Unity als auch VS Code beendet und neu gestartet.
Wenn ich jedoch versuche, das System in VS Code zu verwenden, wird sofort folgende Fehlermeldung angezeigt:
using UnityEngine;
using System.Collections;
using UnityEngine.InputSystem; // <-error
using UnityEngine.InputSystem.Controls; // <-error
Der Typ- oder Namespace-Name 'InputSystem' ist im Namespace 'UnityEngine' nicht vorhanden (fehlt Ihnen eine Assembly-Referenz?) [Assembly-CSharp]
Was kann ich tun, damit VS Code das Unity InputSystem-Paket erkennt?
Antworten
Das Problem ist, dass die erforderlichen .csproj-Dateien (VSCode benötigt sie, um die verfügbaren Bibliotheken zu verstehen) für das neue Paket bei der Installation des neuen Pakets nicht automatisch generiert wurden (es ist mir auch nicht passiert, möglicherweise ist es absichtlich manuell). .
Gehen Sie zu Edit -> Preferences...und klicken Sie dann auf External Tools. Sie müssen das Kästchen ankreuzen Generate .csproj files for: Registry packages(und alle anderen, die Sie möchten) und dann auf klicken Regenerate project files.
Das sollte alles generieren, was VSCode benötigt, um das neue Paket zu erkennen - Sie sollten es nicht einmal neu starten müssen.
Sie müssen das Paket installieren. Gehen Sie zu Windows / Package Manager. Suchen Sie das Eingabesystem und drücken Sie auf Install bestätigen, um das alte Eingabesystem neu zu starten und zu ersetzen.
Wählen Sie Ihr Asset für Eingabeaktionen aus, aktivieren Sie im Inspektorfenster die Option "C # -Klasse generieren" und klicken Sie auf "Anwenden", um eine C # -Skriptdatei zu generieren.
Ich bin auf dasselbe Problem gestoßen und habe es gelöst. Also, hier eine Notiz hinterlassen.
mein Fall
In meinem Fall konnte ich nach der Installation des neuen InputSystem-Pakets mit Package MangerUnity Editor und dem Neustart von Unity Editor gemäß dem angezeigten Dialogfeld Input Systemunter PackagesOrdner angezeigt Projectsehen. Jeder Verweis auf Namespece hat UnityEngine.InputSystemjedoch Fehler verursacht.
Was ich fand, dass Unity.InputSystem.dll nicht unter existierte [Project Dir]/Library/ScriptAssemblies/Unity.InputSystem.dll, worauf sich das Unity-Projekt bezieht. Dieser Pfad befindet sich Assembly-CSharp.csprojdirekt unter dem Unity-Projektverzeichnis.
Eigentlich war es nicht nur für das Input System-Paket, sondern auch für alle anderen Pakete, die ich verwende. [Project Dir]/Library/ScriptAssemblieshatte nur 2 Dateien, Assembly-CSharp.dllund Assembly-CSharp.pdbobwohl dieses Verzeichnis DLL-Dateien aus allen installierten Paketen enthalten sollte.
Lösung
Meine Lösung war einfach.
Assembly-CSharp.csprojDatei löschen (muss irgendwann neu generiert werden)- Unity Editor schließen
- Unity Hub schließen
- Öffnen Sie den Unity Hub
- Öffnen Sie den Unity-Editor
Im letzten Schritt, bevor Unity Editor vollständig aufgeweckt wurde, konnte ich sehen, dass alle Paket-DLL-Dateien in das [Project Dir]/Library/ScriptAssembliesVerzeichnis geladen wurden .
Ich bin mir nicht sicher, ob das Löschen der csproj-Datei und der Neustart von Unity Hub erforderlich waren, aber genau das habe ich getan, um mein kaputtes Projekt wiederherzustellen.
meine Umgebung
- Einheit 2019.4.14f1
- macOS 10.15.7
- Visual Studio 8.8.4
In meinem Fall (Windows, Unity 2019.4 15f1, Visual Studio Code 1.53.0, Eingabesystem 1.0.2) hat es geholfen, die Architektur des Projekts auf x86_64 festzulegen.
Datei-> Build-Einstellungen -> Plattform (PC, MAC & Linux Standalone)
Ich bin mir jedoch nicht sicher, ob dies überhaupt Auswirkungen auf VS Code haben könnte oder ob ich dazwischen etwas anderes getan habe, um dies zu beheben.
Ich hatte das gleiche Problem (Mac 10.15.17 mit Unity 2019.3.151f1 persönlich), aber das oben genannte hat bei mir nicht 100% funktioniert. Hier war meine Lösung:
Zuerst habe ich sichergestellt, dass ich das InputSystem-Paket über den Paketmanager installiert habe. Fenster> Paketmanager. Wenn Sie danach suchen, sollten Sie in der Lage sein, 1.0.2 zu installieren, das ab diesem Beitrag das neueste ist.
Von dort aus habe ich sichergestellt, dass der VS-Code korrekt eingerichtet wurde. Ich ging zu Unity> Preferences> External Editor und stellte sicher, dass VS-Code der richtige Editor war. Ich habe dann Projektdateien neu generieren ausgewählt.
Zuletzt habe ich das Skript, das ich verwendet habe, wie folgt oben in die Datei eingefügt:
using UnityEngine;
using UnityEngine.InputSystem;