Unity type or namespace name 'InputSystem' does not exist in the namespace 'UnityEngine'
I have installed the new InputSystem package in my Unity project. I have set the input to "new inputsystem" in the Unity Player Settings. I have quit and restarted both Unity and VS Code.
But when I try to use the system in VS Code, I immediately get this error:
using UnityEngine;
using System.Collections;
using UnityEngine.InputSystem; // <-error
using UnityEngine.InputSystem.Controls; // <-error
The type or namespace name 'InputSystem' does not exist in the namespace 'UnityEngine' (are you missing an assembly reference?) [Assembly-CSharp]
What can I do to make VS Code recognise the Unity InputSystem package?
Réponses
Le problème est que les fichiers .csproj requis (VSCode en a besoin pour comprendre les bibliothèques disponibles) pour le nouveau package n'ont pas été générés automatiquement lorsque vous avez installé le nouveau package (cela ne m'est pas arrivé non plus, peut-être que c'est intentionnellement manuel) .
Allez sur Edit -> Preferences...puis cliquez sur External Tools. Vous devez cocher la case Generate .csproj files for: Registry packages(et toutes les autres que vous pourriez souhaiter) puis cliquer sur Regenerate project files.
Cela devrait générer tout ce qui est nécessaire pour que VSCode reconnaisse le nouveau package - vous ne devriez même pas avoir besoin de le redémarrer.
Vous devez installer le package. Allez dans Windows/Gestionnaire de packages. Recherchez le système d'entrée et appuyez sur la confirmation d'installation pour redémarrer et remplacer l'ancien système d'entrée.
Sélectionnez votre ressource d'action d'entrée, activez Générer une classe C# dans la fenêtre de l'inspecteur et cliquez sur Appliquer pour générer un fichier de script C#.
Je suis tombé sur le même problème, et je l'ai résolu. donc, en laissant une note ici.
mon cas
Dans mon cas, après avoir installé le nouveau package InputSystem Package Mangersur Unity Editor, puis redémarré Unity Editor en suivant la boîte de dialogue apparue, je pouvais voir Input Systemsous Packagesle dossier Projectaffiché. Cependant, toute référence à namespece recevait UnityEngine.InputSystemdes erreurs.
Ce que j'ai trouvé, c'est que Unity.InputSystem.dll n'existait pas sous [Project Dir]/Library/ScriptAssemblies/Unity.InputSystem.dll, ce à quoi le projet Unity fait référence. Ce chemin se trouve dans Assembly-CSharp.csproj, placé juste sous le répertoire du projet Unity.
En fait, ce n'était pas seulement pour le package Input System mais aussi pour tous les autres packages que j'utilise. [Project Dir]/Library/ScriptAssembliesn'avait que 2 fichiers, Assembly-CSharp.dllet Assembly-CSharp.pdb, bien que ce répertoire doive contenir les fichiers dll de tous les packages installés.
Solution
Ma solution était simple.
- supprimer
Assembly-CSharp.csprojle fichier (à régénérer à un moment donné) - fermer l'éditeur Unity
- fermer Unity Hub
- ouvrir Unity Hub
- ouvrir l'éditeur d'unité
À la dernière étape, avant que Unity Editor ne se réveille complètement, je pouvais voir que tous les fichiers dll du package étaient chargés dans le [Project Dir]/Library/ScriptAssembliesrépertoire.
Je ne sais pas si la suppression du fichier csproj et le redémarrage de Unity Hub étaient nécessaires, mais c'est ce que j'ai fait, qui a récupéré mon projet cassé.
mon environnement
- Unité 2019.4.14f1
- macOS 10.15.7
- Visual Studio 8.8.4
Dans mon cas (Windows, Unity 2019.4 15f1, Visual Studio Code 1.53.0, Input System 1.0.2), la définition de l'architecture du projet sur x86_64 a aidé.
Fichier-> Paramètres de construction -> Plate-forme (PC, MAC et Linux autonome)
Je ne sais pas si cela pourrait même affecter VS Code ou si j'ai fait autre chose entre les deux pour résoudre ce problème.
J'ai eu le même problème (Mac 10.15.17 avec Unity 2019.3.151f1 personnel) mais ce qui précède n'a pas fonctionné à 100% pour moi. Voici ma solution :
Tout d'abord, je me suis assuré d'avoir installé le package InputSystem via le gestionnaire de packages. Fenêtre > Gestionnaire de packages. Recherchez-le et vous devriez pouvoir installer 1.0.2 qui est le plus récent à ce jour.
À partir de là, je me suis assuré que le code VS était correctement configuré. J'ai choisi Unity > Préférences > Éditeur externe et je me suis assuré que le code VS était le bon éditeur. J'ai ensuite sélectionné Régénérer les fichiers de projet.
Enfin, sur le script que j'utilisais, je l'ai inclus en haut du fichier comme ceci :
using UnityEngine;
using UnityEngine.InputSystem;