Автозавершення не працює в студії Visual


151

У мене невелика проблема зі сценаріями. Коли я пишу сценарії C # для Unity з Visual studio, здається, що я працюю в блокноті, немає автоматичного завершення (правильно?), І я повинен писати це дуже повільно.

Перегляньте, будь ласка, відео. На початку - нормальна ситуація (з підручника), друга частина показує мою проблему.

Відео з проблемою

Наприклад, transformклас не показує пропозицію або автозаповнення.

Зображення з проблемою:

введіть тут опис зображення

Версія Unity: 5.5.2f1 Встановлено
Visual studio 2015
Інструменти Visual Studio для Unity


1
translate.google.com :) Зробіть відео та завантажте його на YouTube для опису помилки +1 xd
Повідомлення Timon

Гаразд, ll try... I have a Little problem with scripts. When Iнаписання сценаріїв C # для Unity з Visual studio, схоже, я працюю в блокноті, "підказок" (правильних?) Немає, і я повинен писати це дуже повільно. Перегляньте, будь ласка, відео. На початку це нормальна ситуація (з підручника), друга частина - моя проблема.
CorbenDalas

1
Я б сказав, що ви запитуєте про "автодоповнення", а не підказки.
Martijn Pieters

Яка версія Visual Studio та яка версія Unity?
Програміст

Версія Unity: 5.5.2f1 / Visual studio 2015 / Встановлено Visual Studio Tools for Unity
CorbenDalas

Відповіді:


342

Автоматичного завершення немає, оскільки сценарій пише " Різні файли " замість назви проекту. Подивіться на зображення нижче, яке з’явилося із відео у вашому запитанні:

введіть тут опис зображення

Повідомлення " Різні файли " може статися з багатьох причин:

1. Це може статися, коли ви відкриєте файл Unity C # з іншої папки замість того, щоб відкрити його з Unity Editor.

2. Це також може статися тому, що Unity розбився, поки Visual Studio все ще відкритий, тому пошкоджуються деякі файли.

3. Це може статися тому, що Unity було закрито, а потім знову відкрито, але більше не підключено до Visual Studio. Коли відкриється Visual Studio, ви отримуєте " Різні файли " і не маєте автоматичного завершення.

4. Це може статися, коли Visual Studio Tools для єдності не встановлено.

5. Коли ви створюєте скрипт від Unity, тоді швидко відкривайте його, перш ніж Unity закінчить його обробку або перед тим, як круглі значки з анімацією закінчити анімацію.


Більшість випадків це слід виправити за допомогою перезавантаження Unity та Visual Studio.

Я не можу сказати, хто з них викликає проблему, але я висвітлю найбільш ймовірне рішення, щоб виправити це.

Виправлення частини 1 :

1 .Download і установка інструментів Visual Studio для єдності з цієї посилання. Зробіть це, поки Unity та Visual Studio закриті.

2 .З Редактора Unity перейдіть до меню Правка -> Налаштування ... -> Зовнішні інструменти . У спадному меню " Зовнішній редактор сценаріїв" змініть його на Visual Studio 2015 .

введіть тут опис зображення


Виправити частину 2 :

Якщо новостворені файли C # відображаються як різні, дотримуйтесь інструкцій нижче:

1. Від Visual Studio перейдіть до Інструменти -> Параметри ... -> Інструменти для єдності -> Різне . У розділі Показати значок підключення встановіть його trueта перезавантажте Visual Studio.

введіть тут опис зображення

2 .Коли ви повторно почати, значок підключення тепер повинен бути доступний в Visual Studio. Клацніть його, а потім виберіть екземпляр Unity, до якого потрібно підключитися. Червоний значок "x" тепер повинен перетворитися на коричневий значок галочки. Тепер, коли ви створюєте новий файл C # в Unity, він повинен відкриватися, не кажучи про Різне .

введіть тут опис зображення


Виправити частину 3 :

Все ще не виправлено?

Після цього повторно імпортуйте проект C # Project.

1 .close Visual Studio.

2. З Єдності реімпортуйте проект, перейшовши до Активів -> Реімпортувати всіх .

введіть тут опис зображення

3. Тепер відкрийте проект у Visual Studio, перейшовши до Активи -> Відкрити проект C # . Це перезавантажить проект та виправить можливі проблеми з файлом рішення.

введіть тут опис зображення


Виправити частину 4 :

Все ще не виправлено?

Виправити кожен файл C # окремо.

1. Клацніть на Показати всі файли .

введіть тут опис зображення

2. Виберіть скрипт, який не виконує автоматичне завершення, а потім клацніть правою кнопкою миші та виберіть Включити у проект .

введіть тут опис зображення


Виправити частину 5 :

Ще не виправлено?

Заслуга chrisvarnz для цього конкретного рішення , яке , здається, працює для кількох людей.

1 .close Visual Studio

2 .go каталогу проекту і видалити всі згенеровані файли візуальних Studio.

Це розширення для файлів, які потрібно видалити:

  • .csproj
  • .користувач
  • .sln

Приклад:

Скажімо, що назва вашого проекту називається "Цільова стрілянина" , ось так виглядатимуть файли, які слід видалити:

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

Нічого іншого не видаляйте.

3. Двічі клацніть на скрипт ще раз з Unity, який повинен створити новий файл Visual Studio, а потім відкрийте Visual Studio. Це може вирішити вашу проблему.


Виправлення частини 6 :

Якщо не працює, перевірте , якщо ви відчуваєте цю помилку:

Завдання "GetReferenceNearestTargetFrameworkTask" не знайдено

1 .install NuGet PackageManager від сюди .

2. Відновити Visual Visual.

Дивіться цю відповідь для отримання додаткової інформації.


4
Дякуємо за різні вказівники файлів! Закриття VS, видалення проектів VS та sln, а потім подвійне клацання сценарію в Unity (тому регенерація файлів проекту та повторне відкриття VS) виправили це для мене. Я рекомендую спробувати це перед кнопкою "реімпортувати все", оскільки це обід / ніч для нетривіальних проектів.
chrisvarnz

2
Це гарна порада. Сподіваюся, що хтось, хто читає це, зможе побачити цей коментар
програміст

Найчастіше це спричинено створенням нових сценаріїв або переміщенням їх у різні папки в Unity. Всякий раз , коли перезапуск Unity і VS не вирішує, я simoly також видаляти *.csprojі *.slnфайли і запустити Unity , ніж. Зазвичай це працює
derHugo

1
Рішення @chrisvarnz працювало для мене після спробу всіх цих пропозицій.
gollumullog

1
@gollumullog Добре. Оскільки це працювало для кількох людей, я оновив свою відповідь, щоб також включити це.
Програміст

38

Спробуйте це,

У Unity Editor Перейдіть до меню, натисніть на Правка -> Налаштування -> Зовнішні інструменти -> Зовнішній редактор сценаріїв. Встановіть його на Visual Studio (встановлена ​​версія VS).

Тепер у меню Menubar перейдіть до меню Правка -> Налаштування проекту -> Налаштування гравця -> Інші налаштування -> В конфігурації -> Перевірте рівень сумісності API -> Змініть його на встановлену версію .Net. У моєму випадку я встановив його на .Net 4.x

Тепер, якщо програма Visual Studio вже запущена, перейдіть до Visual Studio, вона попросить перезавантажити проект. Перезавантажте проект. Перевірте, чи працює він, якщо не закрийте Visual Studio. Тепер відкрийте файл cs від Unity Editor, і тепер він повинен працювати.


Те саме для мене, дякую! Спробував все, але тільки це виправило
Shadowmak

1
це реальна відповідь. Це потрібно бути на вершині!
Марк Пернелл

Це працювало і для мене. Крім того, зніміть прапорець і ще раз встановіть позначку в Редагуванні / Налаштуваннях проекту / Настройках плеєра / Інші параметри: API автоматичної графіки. Після перезапуску Visual Studio автозавершення повернулося: D
Ant100

14

Я знайшов інший спосіб виправити цю проблему більш зручним способом:

  1. Виберіть розбитий файл у Провіднику рішень.
  2. Відкрийте його Властивості.
  3. Перемкніть поле "Зробити дію" з "Компілювати" на "Немає".
  4. Потім перемкніть його назад на "Компілювати".

Це якось уб'є синхронізацію між Unity та Visual Studio.

Наступного разу, коли Visual Studio буде перезавантажувати проект, він надсилає попередження. Просто натисніть на "Відхилити".


7

Вивантажте та перезавантажте проект у Visual Studio:

  • клацніть правою кнопкою миші ваш проект у Провіднику рішень
  • виберіть " Вивантажити проект"
  • виберіть Перезавантажити проект

Виправлено!

Я знайшов це рішення найкращим (найпростішим), зіткнувшись з проблемою кілька разів.

Джерело: https://alexdunn.org/2017/04/26/xamarin-tips-fixing-the-highlighting-drop-in-your-xamarin-android-projects/


Дякую за допомогу! Це спрацювало, але я відчуваю, що ми повернулися до 90-х і нам потрібно перезапустити Windows, лише цього разу це VS 2017.
user3053247

4
  1. Виберіть проект у Visual Studio
  2. Натисніть кнопку «Оновити»

введіть тут опис зображення


1
Ого! Нічого іншого мені не допомогло; Перевстановіть VS, навіть перевстановіть Unity, щоб він перевстановив VS, видаливши файли .sln та .cjsproj, щоб вони були відроджені. нічого не допомогло .. але, нарешті, простий клацання в провіднику рішень, щоб показати папки, здавалося, це зробив: o
antont

3

Якщо ви виконали все вищезазначене і все ще не працюєте, спробуйте це: Примітка. Ви повинні були оновити VS. Знімок екрана з візуальної студії

Перейдіть до об'єднання> редагування> налаштування> зовнішні інструменти> зовнішній редактор скриптів. Скріншот Unity Якось для мене не вибрав "візуальну студію" для зовнішнього редактора сценарію, і це не працювало. Як тільки я вибрав це і вдвічі натиснув на файл c # від єдності, він почав працювати.

Я сподіваюся, що і вам це допоможе.


2

Я торкнувся тих самих проблем і сьогодні, використовуючи Visual Studio 2017 15.4.5 з Unity 2017.

Мені вдалося виправити проблему, клацнувши правою кнопкою миші на проект у Visual Studio і змінивши цільову рамку з 3,5 на 4,5.

Сподіваюсь, це допоможе комусь ще за аналогічним сценарієм.


2

Два альтернативних варіанти:

Виправлення 1

@singleton вказав на мене в цьому напрямку. Замість зміни цілі в Visual Studio слід змінити її в Unity, оскільки проект генерується автоматично.

Спочатку видаліть автоматично створені файли Visual Studio: .csproj .user .sln

Потім зсередини Unity перейдіть у програму PlayerSettings і в розділі "Інші налаштування" змініть "Версію виконання сценарію" з "Стабільної 3.5" на "Експериментальну" 4.6.

Однак це не виправило мене.

Виправлення 2

Я помітив, що всі посилання на код, пов’язаний з Unity, позначені жовтим попередженням. Перевірте журнали помилок і перевірте, чи це так. Зокрема, подивіться, якщо ви отримуєте таку помилку: getreferenceNearestTargetframeworkTask

Якщо так, спробуйте: запустити програму Visual Studio Installer знову.

У Інструментах побудови 2017 року натисніть Змінити,

Переконайтесь, що "Помічені цілі та завдання завдання" поставлені відмітки. Це має поставити галочку, якщо натиснути на розробку універсальної платформи Windows.


1

Я знайшов своє рішення, створивши файл .cs з самої візуальної студії замість редактора єдності

  • клацніть правою кнопкою миші на папці проекту в Explorer Explorer
  • додати> новий елемент
  • введіть "єдність" у полі пошуку вгорі праворуч
  • виберіть "CSharp MonoBehaviour"
  • назвіть свій скрипт внизу та натисніть Додати

1
Що робити, якщо ви вже створили сценарії, але потім раптом виникає ця проблема, чи збираєтесь ви видалити всі сценарії та створити їх знову з Visual Studio?
Програміст

@Programmer добре, я би використовував ваше рішення Частини 4, щоб виправити вже сценарій помилки, але я завжди використовую візуальну студію, щоб створити новий сценарій, оскільки жодне ваше рішення не зупинило помилку нового сценарію, якщо я не створив файл із візуальної студії
Fredy Rommy Sianturi

1

У моєму випадку правильна версія .net не була встановлена ​​на моєму ПК. Я встановлюю .net 3.5 на свій ПК, і це працювало для мене.


Ваша відповідь дала мені ідею змінити рівень сумісності API в налаштуваннях програвача Unity з .Net 2.0 на .Net 4.x. А потім перезавантажте проект у Visual Studio. Зараз все працює добре.
Юнон Хан Момін

1

Проблема, з якою я стикався, полягала в тому, що проект C # орієнтувався на іншу .NET Framework (4.7.2), тоді як проект Unity мав іншу ціль (.NET 3.5).

Я вирішив це, змінивши ціль у Unity as-

Файл -> Налаштування збірки -> Налаштування програвача -> Інші налаштування -> Рівень сумісності API: Установіть його на .NET версію, яку ви вже встановили (Перевірте свою .NET версію тут ). У моєму випадку це було 4.x

Після цього Visual Studio працював ідеально, і автокорекція також була виправлена.


Це працювало для мене. Я змінив рівень сумісності API для .Net 4.x, а потім Visual Studio попросив перезавантажити проект. Я перезавантажив проект. Потім я закрив Visual Studio, відкрив файл cs від Unity Editor і тепер все працює добре.
Юнон Хан Момін

1

Спробуйте натиснути Ctrl + Alt + Space(яке перемикається між пропозиціями та стандартними режимами завершення)


0

Для Windows або macOS:

Завантажте / Встановіть ID Visual Studio IDE (за допомогою інструментів Unity)

Під час встановлення переконайтеся, що ви включили встановлення

Розробка ігор з Unity

введіть тут опис зображення

Потім за допомогою Unity (ви можете двічі клацнути один зі своїх файлів C #), відкрийте новий проект C #, і Visual Studio IDE має відкритися з новою структурою проекту.

введіть тут опис зображення

Звідти ви зможете побачити, що ви шукаєте.

Наприклад:

введіть тут опис зображення

введіть тут опис зображення

Для Linux (пропозиція):

Спробуйте Monodevelop - Додаткова інформація , вона надає код / ​​підказки.


0

Я вирішив встановити ту ж версію .NET на WIN, яка була налаштована в моєму проекті Unity. (Налаштування програвача)


0

Моє автозаповнення також не працювало, оскільки інструменти Visual Studio для Unity не були встановлені. Отже, після цього встановіть, видаліть автоматично створені файли Visual Studio. Інші сказали, що ви знову відкриєте файл, і проблема вирішена, але це не так.

Хитрість полягає в тому, що замість того, щоб звичайно двічі клацнути файл, потрібно відкрити файл C # від Unity правою кнопкою миші та натиснути «Відкрити проект C #».


0

Жодне з перерахованих вище рішень не працювало для мене. Однак я відкрив файл ProjectName.CSPROJ і вручну додав новий файл, і він працював як шарм


0
  • Перейдіть до "Параметри" в меню "Інструменти", а потім виберіть "Документи" у вузлі "Середовище". (Якщо Документи не відображаються у списку, виберіть Показати всі налаштування у діалоговому вікні Параметри.)
  • Поставте галочку "Різні файли в Провіднику рішень" та натисніть кнопку ОК. (Цей параметр відображає вузол "Різні файли" в Провіднику рішень. Різні файли - це файли, які не пов'язані з проектом чи рішенням, але можуть з’явитися в Провіднику рішень для вашої зручності, якщо ви поставите галочку для цього параметра.)
  • Знайдіть свій файл у Провіднику рішень у розділі "Різні файли". Потім перетягніть файл до місця, де він повинен належати, і вуаля! Це скопіює файл туди, куди ви його скинете. Тепер ви можете безпечно видалити старіший файл у папці Різні файли, якщо ви цього хочете

Кредити: https://stackoverflow.com/a/47662523/10471480


Якщо папка Scripts не видно:

  • Клацніть на "Показати всі файли" в Провіднику рішень
  • Знайдіть папку Сценарії.
  • Клацніть правою кнопкою миші на сценарії та виберіть "Включити у проект"

0

Що працювало у мене, це те, що я скопіював увесь код всередині зламаного класу і видалив цей файл. Потім я відкрив порожній файл і вставив.

Результат : повернулися красиві синтаксичні моменти!


0

Майте на увазі, що якщо ви використовуєте інструмент ReSharper, він перекриє IntelliSense і покаже, що він власний. Щоб змінити це, у VS перейдіть до Розширень -> ReSharper -> Опції -> IntelliSense -> Загальне, а потім виберіть Visual Studio, а не ReSharper.


0

Перш ніж перезапустити та / або перевстановити VS, спершу спробуйте відкрити будь-який інший із своїх проектів, щоб побачити, чи працює Intellisence, якщо він є, то питання, ймовірно, лежить у вашому поточному проекті. По-перше, найбільш вірогідною жертвою стали пакети NUGET з оновленнями, що очікують. Щоб виправити це,

  1. Клацніть правою кнопкою миші на посилання
  2. Приступайте до керування NUGET-пакетами під NUGET-пакетами
  3. перейти до оновлень. Встановити оновлення та повторно перевірити Intellisence

0

Я спробував усе це, але виявив, що мені потрібно клацнути правою кнопкою миші рішення в Провіднику рішень і додати існуючі елементи та знайти файл збірки C # у Провіднику Windows. Здається, є багато мільйонів різних проблем, які дають вам цю помилку, це, мабуть, найпростіше рішення. Якщо ви двічі клацніть на своєму сценарії від єдності, це, здається, не перетягує збірку.


0

один із перерахованих вище методів працює для мене, і я щойно знайшов рішення цієї проблеми:
1. По-перше, перейдіть до каталогу проекту та видаліть .slnфайл
2. По-друге, перейдіть до єдності та двічі клацніть свій сценарій. Тоді Visual Studio буде відкрито з помилкою, введіть тут опис зображення

  1. Потім натисніть кнопку ОК і закрийте редактор Visual Studio.
  2. Нарешті, вимкніть свій Windows Defender і перейдіть до каталогу проектів, і там з'явиться .csprojфайл. Просто двічі клацніть та відкрийте це у вашому редакторі Visual Studio і відкрийте папку сценаріїв всередині папки активів, а також відкрити сценарії та автозавершення буде працювати чудово.

0

Оновлення 2020 року за допомогою Visual Studio Community 2019 та Unity 2019.3:

1) Відкрийте інсталятор Visual Studio в якості адміністратора, виберіть, щоб змінити поточну установку та додайте "Розробка ігор для Unity"

2) Якщо зараз додати новий скрипт c # в Unity та відкрити його (автоматично) за допомогою Visual Studio, він не описується як "Різне" у верхній частині вікна, але "Складання-CSharp", і автозаповнення працює.


0

Ще одне можливе виправлення:

  1. У вікні проекту натисніть на папку Активи
  2. Клацніть правою кнопкою миші та створити -> С # сценарій
  3. Двічі клацніть по цьому і чекайте.

Чомусь це робота.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.