Die automatische Vervollständigung funktioniert in Visual Studio nicht


149

Ich habe ein kleines Problem mit Skripten. Wenn ich C # -Skripte für Unity mit Visual Studio schreibe, arbeite ich anscheinend im Editor, es gibt keine automatische Vervollständigung (richtig?) Und ich muss es sehr langsam schreiben.

Bitte schauen Sie sich das Video an. Zu Beginn ist die normale Situation (aus dem Tutorial), der zweite Teil zeigt mein Problem.

Video mit Problem

Beispielsweise zeigt die transformKlasse keinen Vorschlag oder keine automatische Vervollständigung.

Bild mit Problem:

Geben Sie hier die Bildbeschreibung ein

Unity-Version: 5.5.2f1
Visual Studio 2015
Visual Studio Tools für Unity ist installiert


1
translate.google.com :) Ein Video erstellen und auf YouTube hochladen, um den Fehler zu beschreiben +1 xd
Timon Post

Ok, ll try... I have a Little problem with scripts. When Iich schreibe C # -Skripte für Unity mit Visual Studio. Es scheint, als würde ich im Editor arbeiten. Es gibt keine "Tipps" (richtig?) Und ich muss es sehr langsam schreiben. Bitte schauen Sie sich das Video an. Am Anfang ist normale Situation (aus dem Tutorial), der zweite Teil ist mein Problem.
CorbenDalas

1
Ich würde sagen, Sie fragen nach "Autocompletion", nicht nach Tooltips.
Martijn Pieters

Welche Visual Studio-Version und welche Unity-Version?
Programmierer

Unity-Version: 5.5.2f1 / Visual Studio 2015 / Visual Studio Tools für Unity ist installiert
CorbenDalas

Antworten:


337

Es erfolgt keine automatische Vervollständigung, da im Skript anstelle des Namens des Projekts " Verschiedene Dateien " angezeigt wird. Schauen Sie sich das Bild unten an, das aus dem Video in Ihrer Frage stammt:

Geben Sie hier die Bildbeschreibung ein

Die Meldung " Verschiedene Dateien " kann aus verschiedenen Gründen auftreten:

1. Dies kann passieren, wenn Sie Ihre Unity C # -Datei aus einem anderen Ordner öffnen, anstatt sie über den Unity Editor zu öffnen.

2. Dies kann auch passieren, weil Unity abgestürzt ist, während Visual Studio noch geöffnet ist, wodurch einige Dateien beschädigt werden.

3. Dies kann passieren, weil Unity geschlossen und dann wieder geöffnet wurde, aber nicht mehr mit Visual Studio verbunden ist. Wenn Visual Studio geöffnet wird, erhalten Sie " Verschiedene Dateien " und keine automatische Vervollständigung.

4. Dies kann passieren, wenn Visual Studio Tools for Unity nicht installiert ist.

5. Wenn Sie ein Skript aus Unity erstellen, öffnen Sie es schnell, bevor Unity die Verarbeitung beendet oder bevor die Animation mit runden Symbolen animiert wird.


In den meisten Fällen sollte ein Neustart von Unity und Visual Studio dies beheben.

Ich kann nicht sagen, welche das Problem verursacht, aber ich werde die wahrscheinlichste Lösung zur Behebung dieses Problems behandeln.

Fix Teil 1 :

1. Laden Sie Visual Studio Tools für die Einheit über diesen Link herunter und installieren Sie sie . Tun Sie dies, während Unity und Visual Studio beide geschlossen sind.

2. Gehen Sie im Unity Editor zu Bearbeiten -> Einstellungen ... -> Externe Tools . Auf der externen Skript - Editor Drop - Down - Menü ändern , das zu Visual Studio 2015 .

Geben Sie hier die Bildbeschreibung ein


Fix Teil 2 :

Wenn neu erstellte C # -Dateien als Verschiedenes angezeigt werden, befolgen Sie die folgenden Anweisungen:

1. Gehen Sie in Visual Studio zu Extras -> Optionen ... -> Tools für Unity -> Verschiedenes . Unter anzeigen Konnektivität Symbol , stellen Sie truedann Visual Studio neu starten.

Geben Sie hier die Bildbeschreibung ein

2. Wenn Sie neu starten, sollte das Verbindungssymbol jetzt in Visual Studio verfügbar sein. Klicken Sie darauf und wählen Sie die Unity-Instanz aus, zu der eine Verbindung hergestellt werden soll. Das rote 'x'-Symbol sollte sich jetzt in ein braunes Häkchensymbol verwandeln. Wenn Sie jetzt eine neue C # -Datei in Unity erstellen, sollte diese ohne Verschiedenes geöffnet werden .

Geben Sie hier die Bildbeschreibung ein


Fix Teil 3 :

Immer noch nicht behoben?

Projekt erneut importieren und dann C # -Projekt öffnen.

1. Schließen Sie Visual Studio.

2. Importieren Sie aus Unity das Projekt erneut, indem Sie zu Assets -> Reimport All gehen .

Geben Sie hier die Bildbeschreibung ein

3. Öffnen Sie jetzt das Projekt in Visual Studio, indem Sie zu Assets -> C # -Projekt öffnen gehen . Dadurch wird das Projekt neu geladen und mögliche Probleme mit der Lösungsdatei behoben.

Geben Sie hier die Bildbeschreibung ein


Fix Teil 4 :

Immer noch nicht behoben?

Korrigieren Sie jede C # -Datei einzeln.

1. Klicken Sie auf das Symbol Alle Dateien anzeigen .

Geben Sie hier die Bildbeschreibung ein

2. Wählen Sie das Skript aus, das nicht automatisch vervollständigt wird, klicken Sie mit der rechten Maustaste und wählen Sie In Projekt einschließen .

Geben Sie hier die Bildbeschreibung ein


Fix Teil 5 :

Noch nicht behoben?

Kredit geht an chrisvarnz für diese spezielle Lösung , die für mehrere Personen gearbeitet zu haben scheint.

1. Schließen Sie Visual Studio

2. Wechseln Sie in Ihr Projektverzeichnis und löschen Sie alle generierten Visual Studio-Dateien.

Dies sind die zu löschenden Dateierweiterungen:

  • .csproj
  • .Benutzer
  • .sln

Beispiel:

Angenommen, der Name Ihres Projekts heißt "Target Shoot". So sollten die zu löschenden Dateien aussehen:

  • Ziel Shoot.csproj
  • Ziel Shoot.Editor.csproj
  • Ziel Shoot.Editor.csproj.user
  • Ziel Shoot.Player.csproj
  • Ziel Shoot.Player.csproj.user
  • Ziel Shoot.sln

Löschen Sie nichts anderes.

3. Doppelklicken Sie in Unity erneut auf das Skript, um eine neue Visual Studio-Datei zu generieren, und öffnen Sie dann Visual Studio. Dies kann Ihr Problem lösen.


Fix Teil 6 :

Wenn dies nicht funktioniert, überprüfen Sie, ob dieser Fehler auftritt:

Die Aufgabe "GetReferenceNearestTargetFrameworkTask" wurde nicht gefunden

1. Installieren Sie Nuget PackageManager von hier aus .

2. Starten Sie Visual Visual neu.

Weitere Informationen finden Sie in dieser Antwort.


4
Vielen Dank für den Verweis auf verschiedene Dateien! Das Schließen von VS, das Löschen der VS-Projekte und sln und das Doppelklicken auf ein Skript in Unity (daher das Neuerstellen der Projektdateien und das erneute Öffnen von VS) haben das Problem für mich behoben. Ich würde empfehlen, dies vor der Schaltfläche "Alle erneut importieren" zu versuchen, da dies für nicht triviale Projekte Mittagessen / Übernachtung ist.
Chrisvarnz

2
Das ist ein guter Rat. Hoffe, jeder, der dies liest, kann diesen Kommentar sehen
Programmierer

Dies wird meistens dadurch verursacht, dass neue Skripts erstellt oder in andere Ordner in Unity verschoben werden. Jedes Mal , wenn Neustart der Einheit und VS ist es nicht lösen, ich simoly auch löschen *.csprojund *.slnDateien und starten Unity als. Dies funktioniert normalerweise
derHugo

1
Die @ chrisvarnz-Lösung hat bei mir funktioniert, nachdem ich all diese anderen Vorschläge ausprobiert hatte.
Gollumullog

1
@gollumullog Gut. Da dies für mehrere Personen funktioniert hat, habe ich meine Antwort aktualisiert, um dies auch einzuschließen.
Programmierer

37

Versuche dies,

Klicken Sie im Unity-Editor im Menü auf Bearbeiten -> Einstellungen -> Externe Tools -> Externer Skript-Editor. Stellen Sie Visual Studio ein (Ihre installierte Version von VS).

Gehen Sie nun in der Menüleiste zu Bearbeiten -> Projekteinstellungen -> Player-Einstellungen -> Andere Einstellungen -> Unter Konfiguration -> API-Kompatibilitätsstufe überprüfen -> Ändern Sie sie in Ihre installierte .NET-Version. In meinem Fall habe ich es auf .Net 4.x eingestellt

Wenn Visual Studio bereits ausgeführt wird, gehen Sie zu Visual Studio und werden aufgefordert, das Projekt neu zu laden. Laden Sie das Projekt neu. Überprüfen Sie, ob es funktioniert, wenn Sie Visual Studio nicht schließen. Öffnen Sie jetzt die cs-Datei im Unity Editor, und jetzt sollte es funktionieren.


Das gleiche gilt für mich, danke! Versuchte alles, aber nur das hat es behoben.
Shadowmak

1
Das ist die WIRKLICHE Antwort. Das muss oben sein!
Mark Purnell

Das hat auch bei mir funktioniert. Eine weitere Sache, die ich in Unity 2020.2.0a13 getan habe, war das Deaktivieren und erneute Aktivieren der Markierung unter Bearbeiten / Projekteinstellungen / Player / Andere Einstellungen: Auto Graphics API. Nach dem Neustart von Visual Studio war die automatische Vervollständigung wieder
verfügbar

14

Ich habe einen anderen Weg gefunden, um dieses Problem bequemer zu beheben:

  1. Wählen Sie die beschädigte Datei im Projektmappen-Explorer aus.
  2. Öffnen Sie die Eigenschaften.
  3. Wechseln Sie das Feld "Build Action" von "Compile" zu "None".
  4. Schalten Sie es dann wieder auf "Kompilieren".

Dadurch wird die Synchronisation zwischen Unity und Visual Studio irgendwie beendet.

Wenn Visual Studio das Projekt das nächste Mal neu lädt, wird eine Warnung ausgegeben. Klicken Sie einfach auf "Verwerfen".


7

Entladen und laden Sie das Projekt in Visual Studio neu:

  • Klicken Sie im Projektmappen- Explorer mit der rechten Maustaste auf Ihr Projekt
  • wählen Sie Unload - Projekt
  • Wählen Sie Reload - Projekt

Fest!

Ich fand diese Lösung am besten (am einfachsten), da ich mehrmals auf das Problem gestoßen war.

Quelle: https://alexdunn.org/2017/04/26/xamarin-tips-fixing-the-highlighting-drop-in-your-xamarin-android-projects/


Danke für die Hilfe! Das hat funktioniert, aber ich glaube, wir sind zurück in den 90ern und müssen Windows neu starten, nur diesmal ist es VS 2017.
user3053247

4
  1. Wählen Sie ein Projekt in Visual Studio aus
  2. Klicken Sie auf die Schaltfläche "Aktualisieren"

Geben Sie hier die Bildbeschreibung ein


1
Whoa! Sonst half mir nichts; Neuinstallation von VS, sogar Neuinstallation von Unity, sodass VS neu installiert wird, Löschen von SLN- und CJsproj-Dateien, damit diese neu generiert werden. nichts half .. aber schließlich schien ein einfacher Klick im Lösungs-Explorer, um Ordner
anzuzeigen,

2

Ich habe heute mit Visual Studio 2017 15.4.5 mit Unity 2017 dieselben Probleme festgestellt.

Ich konnte das Problem beheben, indem ich mit der rechten Maustaste auf das Projekt in Visual Studio klickte und das Zielframework von 3.5 auf 4.5 änderte.

Ich hoffe, dies hilft allen anderen in einem ähnlichen Szenario.


2

Zwei alternative Optionen:

Fix 1

@singleton zeigte mir in diese Richtung. Anstatt das Ziel in Visual Studio zu ändern, sollten Sie es in Unity ändern, da das Projekt automatisch generiert wird.

Löschen Sie zuerst die automatisch generierten Visual Studio-Dateien: .csproj .user .sln

Gehen Sie dann in Unity zu PlayerSettings und ändern Sie unter "Andere Einstellungen" die "Scripting Runtime Version" von "Stable 3.5" in "Experimental 4.6".

Das hat es jedoch nicht für mich behoben.

Fix 2

Ich habe festgestellt, dass alle Verweise auf Unity-bezogenen Code mit einer gelben Warnung gekennzeichnet sind. Überprüfen Sie Ihre Fehlerprotokolle und prüfen Sie, ob dies der Fall ist. Überprüfen Sie insbesondere, ob der folgende Fehler angezeigt wird: getreferenceNearestTargetframeworkTask

Wenn ja, versuchen Sie: Starten Sie Visual Studio Installer erneut.

Klicken Sie in den Build Tools 2017 auf Ändern.

Stellen Sie sicher, dass "Nuget-Ziele und Build-Aufgaben" aktiviert sind. Dies sollte angekreuzt werden, wenn Sie auf Universal Windows Platform Development klicken.


2

Wenn Sie alle oben genannten Schritte ausgeführt haben und immer noch nicht funktionieren, versuchen Sie Folgendes: Hinweis: Sie sollten VS aktualisiert haben. Screenshot aus dem Visual Studio

Gehen Sie zu Unity> Bearbeiten> Einstellungen> Externe Tools> Externer Skripteditor. Unity-Screenshot Irgendwie hatte ich für mich nicht "Visual Studio" für den externen Skripteditor ausgewählt und es funktionierte nicht. Sobald ich dies ausgewählt und doppelt auf c # -Datei von Unity geklickt hatte, fing es an zu funktionieren.

Ich hoffe es hilft dir auch.


1

Ich fand meine Lösung, indem ich die CS-Datei aus Visual Studio selbst anstelle des Unity-Editors erstellte

  • Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektordner
  • > neues Element hinzufügen
  • Geben Sie "Einheit" in das Suchfeld oben rechts ein
  • Wählen Sie "CSharp MonoBehaviour"
  • Benennen Sie Ihr Skript unten und klicken Sie auf Hinzufügen

1
Was ist, wenn Sie die Skripte bereits erstellt haben, aber plötzlich dieses Problem auftritt? Werden Sie alle Skripte löschen und sie erneut in Visual Studio erstellen?
Programmierer

@Programmer Nun, ich würde Ihre Teil 4-Lösung verwenden, um das bereits fehlerhafte Skript zu beheben, aber ich verwende immer Visual Studio, um ein neues Skript zu erstellen, da keine Ihrer Lösungen das neue Skript daran
hinderte

1

In meinem Fall wurde auf meinem PC nicht die richtige .net-Version installiert. Ich installiere die .net 3.5 auf meinem PC und das hat bei mir funktioniert.


Ihre Antwort gab mir die Idee, die API-Kompatibilitätsstufe in den Unity Player-Einstellungen von .Net 2.0 auf .Net 4.x zu ändern. Laden Sie das Projekt anschließend in Visual Studio neu. Jetzt funktioniert alles gut.
Juned Khan Momin

1

Das Problem, mit dem ich konfrontiert war, war, dass das C # -Projekt auf ein anderes .NET Framework (4.7.2) abzielte, während das Unity-Projekt ein anderes Ziel hatte (.NET 3.5).

Ich habe dies behoben, indem ich das Ziel in Unity as- geändert habe.

Datei -> Build-Einstellungen -> Player-Einstellungen -> Andere Einstellungen -> API-Kompatibilitätsstufe: Stellen Sie die bereits installierte .NET-Version ein (Überprüfen Sie hier Ihre .NET-Version ). In meinem Fall war es 4.x.

Danach funktionierte Visual Studio einwandfrei und die Autokorrektur wurde ebenfalls behoben.


Das hat bei mir funktioniert. Ich habe meine API-Kompatibilitätsstufe in .Net 4.x geändert und dann Visual Studio gebeten, das Projekt neu zu laden. Ich habe das Projekt neu geladen. Dann habe ich Visual Studio geschlossen, die CS-Datei aus dem Unity Editor geöffnet und jetzt funktioniert alles einwandfrei.
Juned Khan Momin

1

Versuchen Sie es mit Drücken Ctrl + Alt + Space(wodurch zwischen Vorschlags- und Standardabschlussmodus umgeschaltet wird).


0

Für Windows oder MacOS:

Laden Sie die Visual Studio-IDE herunter / installieren Sie sie (mit Unity Tools).

Stellen Sie bei der Installation sicher, dass Sie die Installation von einschließen

Spieleentwicklung mit Unity

Geben Sie hier die Bildbeschreibung ein

Öffnen Sie dann mit Unity (Sie können auf eine Ihrer C # -Dateien doppelklicken) ein neues C # -Projekt, und die Visual Studio-IDE sollte mit Ihrer neuen Projektstruktur geöffnet werden.

Geben Sie hier die Bildbeschreibung ein

Von dort aus sollten Sie sehen können, wonach Sie suchen.

Beispielsweise:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Für Linux (Vorschlag):

Versuchen Sie Monodevelop - Zusätzliche Informationen , es bietet Code-Vervollständigung / Hinweise.


0

Ich habe versucht, dieselbe Version von .NET unter WIN zu installieren, die in meinem Unity-Projekt konfiguriert wurde. (Spielereinstellungen)


0

Meine automatische Vervollständigung funktionierte auch nicht, da Visual Studio Tools for Unity nicht installiert war. Löschen Sie nach der Installation die automatisch generierten Visual Studio-Dateien. Andere sagten, dass Sie die Datei erneut öffnen und das Problem behoben ist, aber nicht.

Der Trick ist: Anstatt normalerweise auf die Datei zu doppelklicken, müssen Sie die C # -Datei von Unity aus mit einem Rechtsklick und dann auf "C # -Projekt öffnen" öffnen.


0

Keine der oben genannten Lösungen hat bei mir funktioniert. Ich habe jedoch die Datei ProjectName.CSPROJ geöffnet und die neue Datei manuell hinzugefügt, und es hat wie ein Zauber funktioniert


0
  • Gehen Sie im Menü Extras zu Optionen und wählen Sie dann im Knoten Umgebung die Option Dokumente. (Wenn Dokumente nicht in der Liste angezeigt werden, wählen Sie im Dialogfeld Optionen die Option Alle Einstellungen anzeigen.)
  • Aktivieren Sie das Kontrollkästchen "Verschiedene Dateien im Projektmappen-Explorer" und klicken Sie auf "OK". (Diese Option zeigt den Knoten "Verschiedene Dateien" im Projektmappen-Explorer an. Verschiedene Dateien sind Dateien, die keinem Projekt oder einer Lösung zugeordnet sind, aber im Projektmappen-Explorer angezeigt werden können, wenn Sie diese Option aktivieren.)
  • Suchen Sie Ihre Datei im Projektmappen-Explorer unter "Verschiedene Dateien". Dann ziehen Sie Ihre Datei per Drag & Drop an die Stelle, an die sie gehören soll, und voila! Dadurch wird die Datei an die Stelle kopiert, an der Sie sie ablegen. Sie können die ältere Datei jetzt sicher im Ordner "Verschiedene Dateien" löschen, wenn Sie dies möchten

Credits: https://stackoverflow.com/a/47662523/10471480


Falls der Skriptordner nicht sichtbar ist:

  • Klicken Sie im Projektmappen-Explorer auf "Alle Dateien anzeigen"
  • Suchen Sie den Skriptordner.
  • Klicken Sie mit der rechten Maustaste auf Skripte und wählen Sie "In Projekt einschließen".

0

Was mir geholfen hat ist, dass ich den gesamten Code innerhalb der kaputten Klasse kopiert und diese Datei entfernt habe. Dann habe ich eine leere Datei geöffnet und eingefügt.

Ergebnis : Schöne Syntax-Highlights kamen zurück!


0

Beachten Sie, dass bei Verwendung des ReSharper-Tools IntelliSense überschrieben und angezeigt wird. Um dies zu ändern, gehen Sie in VS zu Erweiterungen -> ReSharper -> Optionen -> IntelliSense -> Allgemein und wählen Sie dann Visual Studio und nicht ReSharper.


0

Versuchen Sie vor dem Neustart und / oder der Neuinstallation von VS zunächst, ein anderes Projekt zu öffnen, um festzustellen, ob Intellisence funktioniert. Wenn dies der Fall ist, liegt das Problem wahrscheinlich bei Ihrem aktuellen Projekt. Erstens wären die NUGET-Pakete mit ausstehenden Aktualisierungen das wahrscheinlichste Opfer. Um dies zu beheben,

  1. Klicken Sie mit der rechten Maustaste auf Referenzen
  2. Fahren Sie mit Verwalten von NUGET-Paketen unter NUGET-Paketen fort
  3. Fahren Sie mit Updates fort. Installieren Sie Updates und überprüfen Sie Intellisence erneut

0

Ich habe all dies ausprobiert, aber am Ende festgestellt, dass ich im Projektmappen-Explorer mit der rechten Maustaste auf die Lösung klicken und vorhandene Elemente hinzufügen und die C # -Baugruppendatei im Fenster-Explorer suchen musste. Es scheint eine Unmenge verschiedener Probleme zu geben, die Ihnen diesen Fehler verursachen. Dies ist wahrscheinlich die einfachste Lösung. Wenn Sie von Unity aus auf Ihr Skript doppelklicken, scheint es die Assembly nicht mit sich zu ziehen.


0

Eine der oben genannten Methoden funktioniert für mich und ich habe gerade eine Lösung für dieses Problem gefunden:
1. Gehen Sie zuerst in das Projektverzeichnis und löschen Sie die .slnDatei.
2. Gehen Sie zu Unity und doppelklicken Sie auf Ihr Skript. Dann wird Visual Studio mit einem Fehler geöffnet. Geben Sie hier die Bildbeschreibung ein

  1. Klicken Sie dann auf OK und schließen Sie den Visual Studio-Editor.
  2. Schalten Sie zum Schluss Ihren Windows Defender aus und wechseln Sie in Ihr Projektverzeichnis. Dort wird eine .csprojDatei angezeigt. Doppelklicken Sie einfach und öffnen Sie dies in Ihrem Visual Studio-Editor. Öffnen Sie den Skriptordner im Assets-Ordner und öffnen Sie die Skripte. Die automatische Vervollständigung funktioniert einwandfrei.

0

Update 2020 mit Visual Studio Community 2019 und Unity 2019.3:

1) Öffnen Sie Visual Studio Installer als Administrator, wählen Sie, um Ihre aktuelle Installation zu ändern, und fügen Sie "Spieleentwicklung für Unity" hinzu.

2) Wenn Sie jetzt ein neues c # -Skript in Unity hinzufügen und es (automatisch) mit Visual Studio öffnen, wird es nicht als "Verschiedenes" oben im Fenster beschrieben, sondern mit "Assembly-CSharp", und die automatische Vervollständigung funktioniert.


0

Eine weitere mögliche Lösung:

  1. Klicken Sie im Projektfenster auf den Ordner Assets
  2. Klicken Sie mit der rechten Maustaste und erstellen Sie -> C # -Skript
  3. Doppelklicken Sie darauf und warten Sie.

Aus irgendeinem Grund funktioniert diese.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.