Skrypty Unity edytowane w programie Visual Studio nie zapewniają autouzupełniania

179

Kiedy chcę edytować skrypty C # Unity, otwierają się w programie Visual Studio. Ma zapewniać automatyczne uzupełnianie dla całego kodu związanego z Unity, ale nie działa.

Tutaj możesz zobaczyć brakującą funkcjonalność:

Film przedstawiający brakującą funkcję autouzupełniania

Jak widać, transformobiekt nie otwiera menu autouzupełniania.

Wersja aparatu Unity: 5.5.2f1
Visual studio 2015
Visual Studio Tools for Unity jest zainstalowany

CorbenDalas
źródło
1
translate.google.com :) Tworzenie filmu i umieszczanie go na YouTube za opisanie błędu +1 xd
Timon Post
Ok, ll try... I have a Little problem with scripts. When Ipiszę skrypty C # dla Unity z Visual Studio, wygląda na to, że pracuję w notatniku, nie ma żadnych "wskazówek" (prawda?) I muszę pisać bardzo powoli. Proszę, obejrzyj wideo. Na początku sytuacja normalna (z tutoriala), druga część to mój problem.
CorbenDalas
1
Powiedziałbym, że pytasz o „autouzupełnianie”, a nie o podpowiedzi.
Martijn Pieters
Jaka wersja programu Visual Studio i jaka wersja Unity?
Programista
Wersja Unity: 5.5.2f1 / Visual studio 2015 / Visual Studio Tools for Unity jest zainstalowana
CorbenDalas

Odpowiedzi:

406

Nie ma autouzupełniania, ponieważ w skrypcie zamiast nazwy projektu jest napisane „ Różne pliki ”. Spójrz na poniższy obrazek, który pochodzi z filmu, którego dotyczy Twoje pytanie:

wprowadź opis obrazu tutaj

Komunikat „ Różne pliki ” może wystąpić z wielu powodów:

  1. Może się to zdarzyć, gdy otworzysz plik Unity C # z innego folderu zamiast otwierania go w edytorze Unity.

  2. Może się to również zdarzyć, ponieważ Unity uległ awarii, gdy program Visual Studio jest nadal otwarty, co powoduje uszkodzenie niektórych plików.

  3. Może się tak zdarzyć, ponieważ Unity został zamknięty, a następnie ponownie otwarty, ale nie jest już połączony z programem Visual Studio. Po otwarciu programu Visual Studio pojawi się „ Różne pliki ” i brak automatycznego uzupełniania.

  4. Może się to zdarzyć, gdy nie zainstalowano programu Visual Studio Tools for Unity .

  5. Kiedy tworzysz skrypt z Unity, szybko go otwórz, zanim Unity zakończy przetwarzanie go lub zanim animacja okrągłej ikony zakończy się animacją.


W większości przypadków ponowne uruchomienie Unity i programu Visual Studio powinno rozwiązać ten problem.

Nie mogę powiedzieć, który z nich powoduje problem, ale przedstawię najbardziej prawdopodobne rozwiązanie tego problemu.

Napraw część 1 :

  1. Pobierz i zainstaluj Visual Studio Tools for Unity z tego linku. Zrób to, gdy Unity i Visual Studio są zamknięte.

  2. W edytorze Unity przejdź do EdycjaPreferencje ... → Narzędzia zewnętrzne . W menu rozwijanym Edytor skryptów zewnętrznych zmień to na Visual Studio 2015 .

    wprowadź opis obrazu tutaj


Napraw część 2 :

Jeśli nowo utworzone pliki C # pojawiają się jako Różne, postępuj zgodnie z poniższą instrukcją:

  1. W programie Visual Studio przejdź do opcji NarzędziaOpcje ...Narzędzia dla aparatu UnityRóżne . W obszarze Pokaż ikonę łączności ustaw ją na trueponowne uruchomienie programu Visual Studio.

    wprowadź opis obrazu tutaj

  2. Po ponownym uruchomieniu ikona połączenia powinna być teraz dostępna w programie Visual Studio. Kliknij go, a następnie wybierz instancję Unity, z którą chcesz się połączyć. Czerwona ikona „x” powinna teraz zmienić się w brązową ikonę znacznika wyboru. Teraz, gdy tworzysz nowy plik C # w Unity, powinien on zostać otwarty bez mówienia Różne .

    wprowadź opis obrazu tutaj


Napraw część 3 :

Wciąż nie został rozwiązany?

Ponownie zaimportuj projekt, a następnie otwórz projekt C #.

  1. Zamknij program Visual Studio.

  2. Z Unity ponownie zaimportuj projekt, przechodząc do Zasoby → Ponownie importuj wszystko .

    wprowadź opis obrazu tutaj

  3. Teraz otwórz projekt w programie Visual Studio, przechodząc do AssetsOpen C # Project . Spowoduje to ponowne załadowanie projektu i naprawienie możliwych problemów z plikiem rozwiązania.

    wprowadź opis obrazu tutaj


Napraw część 4 :

Wciąż nie został rozwiązany?

Napraw każdy plik C # indywidualnie.

  1. Kliknij ikonę Pokaż wszystkie pliki .

    wprowadź opis obrazu tutaj

  2. Wybierz skrypt, który nie wykonuje automatycznego uzupełniania, a następnie kliknij prawym przyciskiem myszy i wybierz opcję Uwzględnij w projekcie .

    wprowadź opis obrazu tutaj


Napraw część 5 :

Jeszcze nie naprawione?

Zasługa chrisvarnz dla tego konkretnego rozwiązania, które wydaje się, że pracował dla wielu ludzi.

  1. Zamknij program Visual Studio

  2. Przejdź do katalogu projektu i usuń wszystkie wygenerowane pliki programu Visual Studio.

    Oto rozszerzenia plików do usunięcia:

    • .csproj
    • .user
    • .sln

    Przykład:

    Powiedzmy, że nazywa się Twój projekt Target_Shoot, tak powinny wyglądać pliki do usunięcia:

    • Target_Shoot.csproj
    • Target_Shoot.Editor.csproj
    • Target_Shoot.Editor.csproj.user
    • Target_Shoot.Player.csproj
    • Target_Shoot.Player.csproj.user
    • Target_Shoot.sln

    Nie usuwaj niczego innego.

  3. Ponownie kliknij dwukrotnie skrypt w Unity, który powinien wygenerować nowy plik programu Visual Studio, a następnie otwórz program Visual Studio. To może rozwiązać twój problem.


Napraw część 6 :

Jeśli nie działa, sprawdź, czy masz ten błąd:

Nie znaleziono zadania „GetReferenceNearestTargetFrameworkTask”

  1. Zainstalować Nuget PackageManager od tutaj .

  2. Uruchom ponownie Visual Visual.

Zobacz odpowiedź, aby uzyskać więcej informacji.

Programista
źródło
6
Dzięki za wskaźnik różnych plików! Zamknięcie VS, usunięcie projektów VS i sln, a następnie dwukrotne kliknięcie skryptu w Unity (w ten sposób ponowne wygenerowanie plików projektu i ponowne otwarcie VS) naprawiło to za mnie. Zalecałbym wypróbowanie tego przed przyciskiem „zaimportuj ponownie wszystko”, ponieważ jest to lunch / noc w przypadku nietrywialnych projektów.
chrisvarnz
2
To dobra rada. Mam nadzieję, że każdy, kto to czyta, zobaczy ten komentarz
programista,
Najczęściej jest to spowodowane tworzeniem nowych skryptów lub przenoszeniem ich do różnych folderów w Unity. Ilekroć ponownym Unity i VS nie rozwiązuje go, ja simoly również usunąć *.csproji *.slnplików i rozpocząć Jedności niż. Zwykle to działa
derHugo
1
Rozwiązanie @chrisvarnz zadziałało dla mnie po wypróbowaniu wszystkich innych sugestii.
gollumullog
1
@gollumullog Good. Ponieważ działało to dla wielu osób, zaktualizowałem moją odpowiedź, aby również to uwzględnić.
Programmer
56

Spróbuj tego,

  1. W edytorze Unity przejdź do menu, kliknij Edycja -> Preferencje -> Narzędzia zewnętrzne -> Edytor skryptów zewnętrznych. Ustaw go na Visual Studio (zainstalowana wersja VS).

  2. Teraz w pasku menu przejdź do Edycja -> Ustawienia projektu -> Ustawienia odtwarzacza -> Inne ustawienia -> W sekcji Konfiguracja -> Sprawdź poziom zgodności API -> Zmień na zainstalowaną wersję .Net. W moim przypadku ustawiłem to na .Net 4.x

Teraz, jeśli program Visual Studio jest już uruchomiony, przejdź do programu Visual Studio, poprosi o ponowne załadowanie projektu. Załaduj ponownie projekt. Sprawdź, czy działa, jeśli nie, zamknij program Visual Studio. Teraz otwórz plik cs z Unity Editor, a teraz powinien działać.

Juned Khan Momin
źródło
1
To samo dla mnie, dziękuję! Próbowałem wszystkiego, ale tylko to naprawiło.
Shadowmak
4
to jest PRAWDZIWA odpowiedź. To musi być na górze!
Mark Purnell
1
Dla mnie to też zadziałało. Ponadto jedną dodatkową rzeczą, którą zrobiłem w Unity 2020.2.0a13, było odznaczenie i ponowne zaznaczenie znaku w Edytuj / Ustawienia projektu / Odtwarzacz / Inne ustawienia: Auto Graphics API. Po ponownym uruchomieniu programu Visual Studio autouzupełnianie powróciło: D
Ant100
15

Znalazłem inny sposób rozwiązania tego problemu w wygodniejszy sposób:

  1. Wybierz uszkodzony plik w Eksploratorze rozwiązań.
  2. Otwórz jego Właściwości.
  3. Przełącz pole „Build Action” z „Compile” na „None”.
  4. Następnie przełącz go z powrotem na „Kompiluj”.

To w jakiś sposób zabije synchronizację między Unity a Visual Studio.

Następnym razem, gdy program Visual Studio ponownie załaduje projekt, wyświetli ostrzeżenie. Po prostu kliknij „Odrzuć”.

Michaël Nguyen
źródło
6

Zwolnij i ponownie załaduj projekt w programie Visual Studio:

  • kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań
  • wybierz opcję Zwolnij projekt
  • wybierz opcję Wczytaj ponownie projekt

Naprawiony!

Uważam, że to rozwiązanie działa najlepiej (najłatwiej), ponieważ wielokrotnie napotykałem problem.

Źródło: https://alexdunn.org/2017/04/26/xamarin-tips-fixing-the-highlighting-drop-in-your-xamarin-android-projects/

Xonatron
źródło
Dzięki za pomoc! To zadziałało, ale czuję, że jesteśmy z powrotem w latach 90. i musimy ponownie uruchomić system Windows, tyle że tym razem jest to VS 2017.
4
  1. Wybierz projekt w programie Visual Studio
  2. Kliknij przycisk „Odśwież”

wprowadź opis obrazu tutaj

GLeBaTi
źródło
1
Whoa! Nic więcej mi nie pomogło; Ponownie zainstaluj VS, a nawet ponownie zainstaluj Unity, aby ponownie zainstalować VS, usuwając pliki .sln i .cjsproj, aby zostały ponownie wygenerowane. nic nie pomogło ... ale w końcu proste kliknięcie w eksploratorze rozwiązań, aby wyświetlić foldery, zdawało się to robić: o
antont
4

Jeśli wykonałeś wszystkie powyższe i nadal nie działa, po prostu spróbuj: Uwaga: powinieneś zaktualizować VS. Zrzut ekranu z Visual Studio

Idź do Unity> edytuj> preferencje> Narzędzia zewnętrzne> zewnętrzny edytor skryptów. Zrzut ekranu Unity Jakoś dla mnie nie wybrałem "Visual Studio" dla zewnętrznego edytora skryptów i nie działało. Gdy tylko to wybrałem i dwukrotnie kliknąłem plik C # z Unity, zaczęło działać.

Mam nadzieję, że tobie też pomoże.

yOhaan
źródło
2

Te same problemy napotykam dzisiaj, używając programu Visual Studio 2017 15.4.5 z oprogramowaniem Unity 2017.

Udało mi się naprawić ten problem, klikając prawym przyciskiem myszy projekt w programie Visual Studio i zmieniając docelową strukturę z 3,5 na 4,5.

Mam nadzieję, że pomoże to komukolwiek innemu w podobnym scenariuszu.

singel
źródło
2

Dwie alternatywne opcje:

Poprawka 1

@singleton wskazał mi w tym kierunku. Zamiast zmieniać cel w programie Visual Studio, należy go zmienić w Unity, ponieważ projekt jest generowany automatycznie.

Najpierw usuń automatycznie wygenerowane pliki programu Visual Studio: .csproj .user .sln

Następnie z poziomu Unity przejdź do PlayerSettings i pod „Other Settings” zmień „Scripting Runtime Version” ze stabilnej 3.5 na eksperymentalną 4.6.

Jednak to mi nie pomogło.

Poprawka 2

Zauważyłem, że wszystkie odniesienia do kodu związanego z Unity zostały oznaczone żółtym ostrzeżeniem. Sprawdź dzienniki błędów i zobacz, czy tak jest. W szczególności sprawdź, czy pojawia się następujący błąd: getreferenceNearestTargetframeworkTask

Jeśli tak, spróbuj: ponownie uruchom Instalatora programu Visual Studio.

W Build Tools 2017 kliknij przycisk Modyfikuj,

Upewnij się, że „Cele Nuget i zadania kompilacji” są zaznaczone. Powinno to zostać zaznaczone, jeśli klikniesz na tworzenie uniwersalnej platformy Windows.

ickydime
źródło
2

Zaktualizuj 2020 z Visual Studio Community 2019 i Unity 2019.3:

  1. Otwórz Instalatora programu Visual Studio jako administrator, wybierz modyfikację bieżącej instalacji i dodaj „Tworzenie gier dla Unity”

  2. Jeśli teraz dodasz nowy skrypt C # w Unity i otworzysz go (automatycznie) w programie Visual Studio, nie jest on opisany jako „Różne” w górnej części okna, ale z „Assembly-CSharp”, a autouzupełnianie działa.

Andi Schroff
źródło
1

Znalazłem swoje rozwiązanie, tworząc plik .cs z samego programu Visual Studio, zamiast z edytora Unity

  • kliknij prawym przyciskiem myszy folder projektu w eksploratorze rozwiązań
  • dodaj> nowy element
  • wpisz „jedność” w polu wyszukiwania w prawym górnym rogu
  • wybierz „CSharp MonoBehaviour”
  • nazwij swój skrypt u dołu i kliknij Dodaj
Fredy Rommy Sianturi
źródło
1
Co jeśli już utworzyłeś skrypty, ale nagle pojawia się ten problem, czy zamierzasz usunąć wszystkie skrypty i utworzyć je ponownie z programu Visual Studio?
Programmer
@Programmer dobrze, użyłbym twojego rozwiązania Part 4, aby naprawić już skrypt błędu, ale zawsze używam Visual Studio do tworzenia nowego skryptu, ponieważ żadne z twoich rozwiązań nie zatrzymało błędu nowego skryptu, chyba że utworzyłem plik z Visual Studio
Fredy Rommy Sianturi,
1

W moim przypadku poprawna wersja .net nie została zainstalowana na moim komputerze. Instaluję .net 3.5 na moim komputerze i to zadziałało.

Habibur Rahman Ovie
źródło
Twoja odpowiedź dała mi pomysł, aby zmienić poziom zgodności API w ustawieniach odtwarzacza Unity z .Net 2.0 na .Net 4.x. Następnie załaduj ponownie projekt w programie Visual Studio. Teraz wszystko działa dobrze.
Juned Khan Momin
1

W przypadku systemu Windows lub macOS:

Pobierz / zainstaluj środowisko IDE programu Visual Studio (z narzędziami Unity)

Podczas instalacji pamiętaj, aby dołączyć instalację

Tworzenie gier za pomocą Unity

wprowadź opis obrazu tutaj

Następnie za pomocą aparatu Unity (możesz dwukrotnie kliknąć jeden z plików C #), otwórz nowy projekt C #, a środowisko IDE programu Visual Studio powinno zostać otwarte z nową strukturą projektu.

wprowadź opis obrazu tutaj

Stamtąd powinieneś być w stanie zobaczyć, czego szukasz.

Na przykład:

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

W przypadku systemu Linux (sugestia):

Wypróbuj Monodevelop - Dodatkowe informacje , zapewnia uzupełnianie kodu / wskazówki.

Brien Foss
źródło
1

Moje autouzupełnianie również nie działało, ponieważ nie zainstalowano programu Visual Studio Tools for Unity . Po zainstalowaniu usuń automatycznie wygenerowane pliki programu Visual Studio. Inni powiedzieli, że ponownie otwierasz plik i problem został rozwiązany, ale tak nie jest.

Sztuczka polega na tym, że zamiast normalnie dwukrotnie kliknąć plik, musisz otworzyć plik C # z Unity, klikając prawym przyciskiem myszy, a następnie „Otwórz projekt C #”.

Thayakorn Rakwetpakorn
źródło
1

Problem, z jakim się spotkałem, polegał na tym, że projekt C # był przeznaczony dla innego .NET Framework (4.7.2), podczas gdy projekt Unity miał inny cel (.NET 3.5).

Naprawiłem to, zmieniając cel w Unity jako-

Plik -> Ustawienia kompilacji -> Ustawienia odtwarzacza -> Inne ustawienia -> Poziom zgodności API: Ustaw go na wersję .NET, którą już zainstalowałeś (Sprawdź swoją wersję .NET tutaj ). W moim przypadku było to 4.x

Po tym Visual Studio działało doskonale, a autokorekta również została naprawiona.

rkbroach
źródło
To zadziałało dla mnie. Zmieniłem poziom zgodności interfejsu API na .Net 4.x, a następnie program Visual Studio poprosił o ponowne załadowanie projektu. Przeładowałem projekt. Potem zamknąłem Visual Studio, otworzyłem plik cs z Unity Editor i teraz wszystko działa dobrze.
Juned Khan Momin
1

Spróbuj nacisnąć Ctrl + Alt + Space(co przełącza między trybami podpowiedzi i standardowym uzupełnianiem)

maitrunghieuit
źródło
1

Z jakiegoś dziwnego powodu narzędzie „Tworzenie gier za pomocą aparatu Unity” może zostać wyłączone w programie Visual Studio.

Aby to naprawić ...

  1. Otwórz program Visual Studio
  2. Idź do Rozszerzenia → „Zarządzaj rozszerzeniami” → Zainstalowane
  3. Znajdź „Visual Studio 2019 Tools for Unity”
  4. Jeśli jest wyłączona, włącz ją
  5. Uruchom ponownie VS

Kredyt na odpowiedź Yuli Levtov jest na innym wątku

Neuron
źródło
0

Rozwiązałem, aby zainstalować tę samą wersję .NET na WIN, która została skonfigurowana w moim projekcie Unity. (Ustawienia gracza)

Bruno Araujo
źródło
0
  • Przejdź do Opcje w menu Narzędzia, a następnie wybierz Dokumenty w węźle Środowisko. (Jeśli Dokumenty nie pojawiają się na liście, wybierz opcję Pokaż wszystkie ustawienia w oknie dialogowym Opcje).
  • Zaznacz opcję „Różne pliki w Eksploratorze rozwiązań” i kliknij przycisk OK. (Ta opcja wyświetla węzeł „Różne pliki” w Eksploratorze rozwiązań. Różne pliki to pliki, które nie są skojarzone z projektem lub rozwiązaniem, ale mogą być wyświetlane w Eksploratorze rozwiązań dla Twojej wygody, jeśli zaznaczysz tę opcję).
  • Zlokalizuj plik w Eksploratorze rozwiązań w obszarze „Różne pliki”. Następnie przeciągnij i upuść plik tam, gdzie powinien i voila! Spowoduje to skopiowanie pliku do miejsca, w którym go upuścisz. Możesz teraz bezpiecznie usunąć starszy plik w folderze Różne pliki, jeśli chcesz to zrobić

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


W przypadku, gdy folder Scripts nie jest widoczny:

  • Kliknij „Pokaż wszystkie pliki” w Eksploratorze rozwiązań
  • Zlokalizuj folder Scripts.
  • Kliknij prawym przyciskiem myszy Skrypty i wybierz „Uwzględnij w projekcie”
Mangaldeep Pannu
źródło
0

Udało mi się to, że skopiowałem cały kod z zepsutej klasy i usunąłem ten plik. Następnie otworzyłem pusty plik i wkleiłem.

Rezultat : wróciły piękne podkreślenia składni!

Eray Alparslan
źródło
0

Pamiętaj, że jeśli używasz narzędzia ReSharper, zastąpi ono funkcję IntelliSense i wyświetli swoje własne. Aby to zmienić, w VS przejdź do Extensions -> ReSharper -> Options -> IntelliSense -> General, a następnie wybierz Visual Studio, a nie ReSharper.

user11897507
źródło
0

Przed ponownym uruchomieniem i / lub ponowną instalacją VS, spróbuj najpierw otworzyć dowolny inny projekt, aby sprawdzić, czy Intellisence działa, a jeśli tak, to problem prawdopodobnie dotyczy bieżącego projektu. Po pierwsze, najbardziej prawdopodobną ofiarą byłyby pakiety NUGET z oczekującymi aktualizacjami. Aby to naprawić,

  1. Kliknij prawym przyciskiem myszy odniesienia
  2. Przejdź do zarządzania pakietami NUGET w pakietach NUGET
  3. przejdź do aktualizacji Zainstaluj aktualizacje i ponownie sprawdź inteligencję
David Ambuka
źródło
0

Wypróbowałem wszystkie z nich, ale ostatecznie okazało się, że muszę kliknąć prawym przyciskiem myszy rozwiązanie w Eksploratorze rozwiązań, dodać istniejące elementy i znaleźć plik zespołu C # w Eksploratorze Windows. Wydaje się, że istnieje miliard różnych problemów, które powodują ten błąd, jest to prawdopodobnie najprostsze rozwiązanie. Dwukrotne kliknięcie skryptu w programie Unity nie wydaje się przeciągać zestawu.

Kevin Martin
źródło
0

jedna z powyższych metod działa dla mnie i właśnie znalazłem rozwiązanie tego problemu:
1. Najpierw przejdź do katalogu projektu i usuń .slnplik
2. Po drugie, przejdź do unity i dwukrotnie kliknij skrypt. Wtedy Visual Studio otworzy się z błędem, wprowadź opis obrazu tutaj

  1. Następnie kliknij OK i zamknij edytor Visual Studio.
  2. Na koniec wyłącz program Windows Defender, a następnie przejdź do katalogu projektu, a tam będzie .csprojplik. Po prostu kliknij dwukrotnie i otwórz to w edytorze Visual Studio i otwórz folder skryptów w folderze zasobów i otwórz skrypty, a autouzupełnianie będzie działać idealnie.
Indrajith Ekanayake
źródło
0

Kolejna możliwa poprawka:

  1. W oknie projektu kliknij folder Zasoby
  2. Kliknij prawym przyciskiem myszy i Utwórz -> Skrypt C #
  3. Kliknij dwukrotnie i czekaj.

Z jakiegoś powodu ta praca.

Kale_Surfer_Dude
źródło
0

Żadne z powyższych rozwiązań nie zadziałało. Jednak otworzyłem ProjectName.CSPROJplik i ręcznie dodałem nowy plik i działał jak urok

Sebinjude Shaolin
źródło
-1

Spróbuj z kombinacją: Ctrl + Alt + Space

Barna Kadar
źródło