Скрипты Unity, редактируемые в Visual Studio, не поддерживают автозаполнение


156

Когда я хочу отредактировать скрипты C # Unity, они открываются в Visual Studio. Предполагается, что он обеспечивает автозаполнение для всего кода, связанного с Unity, но это не работает.

Здесь вы можете увидеть недостающий функционал:

Видео об отсутствии функции автозаполнения

Как видно, у transformобъекта не открывается меню автозаполнения.

Версия Unity: 5.5.2f1
Visual Studio 2015
Visual Studio Tools for Unity установлен


1
translate.google.com :) Делаем видео и загружаем его на YouTube для описания ошибки +1 xd
Timon Post

Хорошо, я ll try... I have a Little problem with scripts. When Iпишу сценарии C # для Unity с помощью Visual studio, похоже, что я работаю в блокноте, нет никаких "подсказок" (правильно?), И я должен писать это очень медленно. Пожалуйста, посмотрите видео. При запуске нормальная ситуация (из учебника), вторая часть - моя проблема.
CorbenDalas 04

1
Я бы сказал, что вы спрашиваете об автозаполнении, а не о всплывающих подсказках.
Мартейн Питерс

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

Версия Unity: 5.5.2f1 / Visual studio 2015 / Visual Studio Tools для Unity установлены
CorbenDalas,

Ответы:


353

Автоматического завершения нет, потому что в сценарии вместо имени проекта написано « Разные файлы ». Взгляните на изображение ниже, которое было взято из видео по вашему вопросу:

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

Сообщение « Прочие файлы » может появиться по многим причинам:

  1. Это может произойти, если вы откроете файл Unity C # из другой папки вместо того, чтобы открывать его в редакторе Unity.

  2. Это также может произойти из-за того, что Unity аварийно завершила работу, пока Visual Studio все еще открыта, что привело к повреждению некоторых файлов.

  3. Это может произойти из-за того, что Unity был закрыт, а затем снова открыт, но больше не подключен к Visual Studio. При открытии Visual Studio вы получаете « Разные файлы » без автозаполнения.

  4. Это может произойти, если Visual Studio Tools for unity не установлен.

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


В большинстве случаев это должно исправить перезапуск Unity и Visual Studio.

Я не могу сказать, какой из них вызывает проблему, но я расскажу о наиболее вероятном решении, чтобы исправить это.

Исправить Часть 1 :

  1. Загрузите и установите Visual Studio Tools for unity по этой ссылке. Сделайте это, пока Unity и Visual Studio закрыты.

  2. В редакторе Unity перейдите в EditPreferences ... → External Tools . В раскрывающемся меню редактора внешних сценариев измените его на Visual Studio 2015 .

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


Исправить Часть 2 :

Если вновь созданные файлы C # появляются как Разное, следуйте инструкциям ниже:

  1. В Visual Studio перейдите в ИнструментыПараметры ...Инструменты для UnityРазное . В разделе Показать значок подключения установите для него trueперезапуск Visual Studio.

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

  2. При перезапуске значок подключения теперь должен быть доступен в Visual Studio. Щелкните его, затем выберите экземпляр Unity для подключения. Красный значок «x» теперь должен превратиться в значок коричневой галочки. Теперь, когда вы создаете новый файл C # в Unity, он должен открываться без надписи « Разное» .

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


Исправить Часть 3 :

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

Повторно импортируйте проект, затем откройте C # Project.

  1. Закройте Visual Studio.

  2. Из Unity повторно импортируйте проект, выбрав AssetsReimport All .

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

  3. Теперь откройте проект в Visual Studio, выбрав AssetsOpen C # Project . Это перезагрузит проект и устранит возможные проблемы с файлом решения.

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


Исправить Часть 4 :

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

Исправьте каждый файл C # по отдельности.

  1. Щелкните значок Показать все файлы .

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

  2. Выберите сценарий, который не выполняет автозаполнение, затем щелкните правой кнопкой мыши и выберите « Включить в проект» .

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


Исправить Часть 5 :

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

Заслуга chrisvarnz для этого конкретного решения , которое , кажется, работает для нескольких людей.

  1. Закройте Visual Studio

  2. Перейдите в каталог своего проекта и удалите все сгенерированные файлы Visual Studio.

Это расширения файлов, которые нужно удалить:

  • .csproj
  • .user
  • .sln

Пример:

Допустим, имя вашего проекта называется Target_Shoot, вот как должны выглядеть удаляемые файлы:

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

Больше ничего не удаляйте.

  1. Снова дважды щелкните сценарий в Unity, который должен создать новый файл Visual Studio, затем откройте Visual Studio. Это может решить вашу проблему.

Исправить Часть 6 :

Если не работает, проверьте, не возникает ли у вас эта ошибка:

Задача GetReferenceNearestTargetFrameworkTask не найдена.

  1. Установите 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 Хорошо. Поскольку это сработало для нескольких людей, я обновил свой ответ, включив это.
Программист

47

Попробуй это,

В редакторе Unity перейдите в Меню, нажмите Правка -> Настройки -> Внешние инструменты -> Редактор внешних сценариев. Установите его в Visual Studio (ваша установленная версия VS).

Теперь в строке меню перейдите в Edit -> Project Settings -> Player Settings -> Other Settings -> Under Configuration -> Check API Compatibility Level -> Измените его на установленную версию .Net. В моем случае я установил его на .Net 4.x

Теперь, если Visual Studio уже запущена, перейдите в Visual Studio, он попросит перезагрузить проект. Перезагрузите проект. Проверьте, работает ли он, если не закройте Visual Studio. Теперь откройте файл cs из редактора Unity, и теперь он должен работать.


То же и со мной, спасибо! Пробовал все, но только это исправило.
Shadowmak

2
это НАСТОЯЩИЙ ответ. Это должно быть наверху!
Марк Пурнелл,

У меня это тоже сработало. Кроме того, еще одна вещь, которую я сделал в Unity 2020.2.0a13, - это снятие флажка и еще раз отметка в Edit / Project Settings / Player / Other Settings: Auto Graphics API. После перезапуска Visual Studio автозаполнение вернулось: D
Ant100

14

Я нашел другой способ решить эту проблему более удобным способом:

  1. Выберите поврежденный файл в обозревателе решений.
  2. Откройте его свойства.
  3. Переключите поле «Build Action» с «Compile» на «None».
  4. Затем переключите его обратно на «Компилировать».

Это каким-то образом убьет синхронизацию между Unity и Visual Studio.

В следующий раз, когда Visual Studio перезагрузит проект, появится предупреждение. Просто нажмите «Отменить».


7

Выгрузите и перезагрузите проект в Visual Studio:

  • щелкните правой кнопкой мыши свой проект в обозревателе решений
  • выберите " Выгрузить проект"
  • выберите Reload Project

Исправлена!

Я обнаружил, что это решение работает лучше всего (проще всего), столкнувшись с проблемой несколько раз.

Источник: 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, чтобы они были восстановлены. ничего не помогло .. но, наконец, простой щелчок в
обозревателе

3

Если вы выполнили все вышеперечисленное, но по-прежнему не работает, просто попробуйте следующее: Примечание: вы должны были обновить VS. Скриншот из visual studio

Перейдите в Unity> редактировать> настройки> Внешние инструменты> внешний редактор скриптов. Скриншот Unity Почему-то я не выбрал «визуальную студию» для внешнего редактора сценариев, и она не работала. Как только я выбрал это и дважды щелкнул файл С # из единства, он начал работать.

Надеюсь, тебе это тоже поможет.


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 и в разделе «Other Settings» измените «Scripting Runtime Version» со «Stable 3.5» на «Experimental 4.6».

Однако это не помогло мне.

Исправить 2

Я заметил, что все ссылки на код, связанный с Unity, были отмечены желтым предупреждением. Проверьте свои журналы ошибок и посмотрите, так ли это. В частности, проверьте, появляется ли следующая ошибка: getreferenceNearestTargetframeworkTask

Если да, попробуйте: снова запустите установщик Visual Studio.

В Build Tools 2017 нажмите Modify,

Убедитесь, что отмечены флажки «Цели Nuget и задачи сборки». Это должно быть отмечено, если вы нажмете на разработку универсальной платформы Windows.


1

Я нашел свое решение, создав файл .cs из самой Visual Studio вместо редактора единства

  • щелкните правой кнопкой мыши папку проекта в проводнике решений
  • добавить> новый элемент
  • введите "unity" в поле поиска вверху справа
  • выберите "CSharp MonoBehaviour"
  • назовите свой скрипт внизу и нажмите Добавить

1
Что, если вы уже создали сценарии, но внезапно возникает эта проблема: собираетесь ли вы удалить все сценарии и снова создать их из Visual Studio?
Программист

@ Программист: хорошо, я бы использовал ваше решение Части 4, чтобы исправить уже сценарий ошибки, но я всегда использую Visual Studio для создания нового сценария, потому что ни одно из ваших решений не остановило новый сценарий от получения ошибки, если я не создал файл из Visual Studio
Фреди Ромми Sianturi

1

В моем случае правильная версия .net не была установлена ​​на моем компьютере. Я устанавливаю .net 3.5 на свой компьютер, и у меня это сработало.


Ваш ответ дал мне идею изменить уровень совместимости API в настройках Unity Player с .Net 2.0 на .Net 4.x. А затем перезагрузите проект в Visual Studio. Теперь все работает нормально.
Juned Khan

1

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

Я исправил это, изменив цель в Unity как-

Файл -> Настройки сборки -> Настройки проигрывателя -> Другие настройки -> Уровень совместимости API: установите для него версию .NET, которую вы уже установили (проверьте свою версию .NET здесь ). В моем случае это была 4.x

После этого Visual Studio работала отлично, исправили и автокоррекцию.


Это сработало для меня. Я изменил свой уровень совместимости API на .Net 4.x, а затем Visual Studio попросила перезагрузить проект. Перезагрузил проект. Затем я закрыл Visual Studio, открыл файл cs из редактора Unity, и теперь все работает нормально.
Juned Khan

1

Попробуйте нажать Ctrl + Alt + Space(который переключает режимы предложения и стандартного завершения)


0

Для Windows или macOS:

Загрузите / установите IDE Visual Studio (с инструментами Unity)

При установке убедитесь, что вы включили установку

Разработка игр с Unity

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

Затем с помощью Unity (вы можете дважды щелкнуть один из файлов C #) откройте новый проект C #, и в среде IDE Visual Studio должна открыться ваша новая структура проекта.

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

Оттуда вы сможете увидеть то, что ищете.

Например:

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

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

Для Linux (предложение):

Попробуйте Monodevelop - Дополнительная информация , он предоставляет дополнения кода / подсказки.


0

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


0

Моя автозаполнение также не работало, потому что не были установлены Visual Studio Tools for Unity . Итак, после установки удалите автоматически созданные файлы Visual Studio. Другие говорили, что вы снова открываете файл, и проблема решена, но это не так.

Уловка заключается в следующем: вместо обычного двойного щелчка по файлу вам нужно открыть файл C # из Unity, щелкнув правой кнопкой мыши, а затем «Открыть проект C #».


0

Ни одно из вышеперечисленных решений не помогло мне. Однако я открыл файл ProjectName.CSPROJ и вручную добавил новый файл, и он работал как шарм


0
  • В меню «Инструменты» выберите «Параметры» и выберите «Документы» в узле «Среда». (Если Документы не отображаются в списке, выберите Показать все настройки в диалоговом окне Параметры.)
  • Установите флажок «Разные файлы в обозревателе решений» и нажмите кнопку «ОК». (Этот параметр отображает узел «Разные файлы» в обозревателе решений. Разные файлы - это файлы, которые не связаны с проектом или решением, но могут отображаться в обозревателе решений для вашего удобства, если вы отметите этот параметр.)
  • Найдите свой файл в обозревателе решений в разделе «Прочие файлы». Затем перетащите файл туда, где он должен быть, и вуаля! Это скопирует файл туда, куда вы его уроните. Теперь вы можете безопасно удалить старый файл в папке Miscellaneous Files, если хотите.

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


Если папка Scripts не отображается:

  • Нажмите «Показать все файлы» в обозревателе решений.
  • Найдите папку Scripts.
  • Щелкните правой кнопкой мыши скрипты и выберите «Включить в проект».

0

Сработало то, что я скопировал весь код внутри сломанного класса и удалил этот файл. Затем я открыл пустой файл и вставил.

Результат : вернулись красивые синтаксические особенности!


0

Имейте в виду, что если вы используете инструмент ReSharper, он переопределит IntelliSense и покажет свой собственный. Чтобы изменить это, в VS перейдите в Extensions -> ReSharper -> Options -> IntelliSense -> General, затем выберите 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, а затем перейдите в каталог своего проекта, и там будет .csprojфайл. Просто дважды щелкните и откройте его в редакторе Visual Studio, откройте папку сценариев внутри папки ресурсов, откройте сценарии, и автозаполнение будет работать отлично.

0

Обновление 2020 с Visual Studio Community 2019 и Unity 2019.3:

1) Откройте установщик Visual Studio от имени администратора, выберите изменение текущей установки и добавьте «Разработка игр для Unity».

2) Если вы сейчас добавите новый скрипт C # в Unity и откроете его (автоматически) с помощью Visual Studio, он будет описан не как «Разное» в верхней части окна, а как «Assembly-CSharp», и автозаполнение будет работать.


0

Еще одно возможное исправление:

  1. В окне проекта щелкните папку Assets
  2. Щелкните правой кнопкой мыши и выберите Create -> C # Script
  3. Дважды щелкните по нему и подождите.

Почему-то это работает.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.