Как установить monobehaviour visual studio

Обновлено: 17.05.2024

Использование инструментов Visual Studio для Unity

В этом разделе мы рассмотрим, как использовать возможности интеграции и повышения производительности набора средств Visual Studio для Unity, а также как использовать отладчик Visual Studio для разработки Unity.

Открытие скриптов Unity в Visual Studio

после того как Visual Studio установлен в качестве внешнего редактора для unity, двойной щелчок скрипта в редакторе unity автоматически запустится или переключится на Visual Studio и откроет выбранный скрипт.

Доступ к документации по Unity

Доступ к документации по созданию скриптов Unity можно быстро получать из Visual Studio. Если набор средств Visual Studio для Unity не находит документацию по API в локальном режиме, он попытается найти ее через Интернет.

Поместите курсор на новую строку внутри тела класса, производного от MonoBehaviour .

После ввода букв "ontri" отображается список предложений IntelliSense.

Использование IntelliSense в Visual Studio

Выбранный элемент в списке можно изменить тремя способами:

с помощью клавиш со стрелками ВВЕРХ и ВНИЗ;

щелкая нужный элемент;

продолжив ввод имени нужного элемента.

при нажатии клавиши TAB;

при нажатии клавиши ВВОД;

при двойном щелчке выбранного элемента.

Мастер создания скриптов Unity MonoBehavior

Мастер MonoBehavior можно использовать для просмотра списка всех методов API Unity и быстрого выполнения пустого определения. Эта функция, особенно со включенным параметром Создать комментарии для метода, полезна при изучении того, что доступно в Unity API.

Создание определений пустых методов MonoBehavior с помощью мастера MonoBehavior.

В Visual Studio поместите курсор туда, где необходимо вставить методы, а затем нажмите клавиши CTRL+SHIFT+M для запуска мастера MonoBehavior. в Visual Studio для Mac нажмите Cmd + Shift + M.

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

Чтобы выбрать необходимую версию, используйте раскрывающийся список Версия платформы.

Методы по умолчанию вставляются в позицию курсора. В качестве альтернативы можно вставить их после любого метода, который уже реализован в классе. Для этого измените значение раскрывающегося списка точка вставки на нужное расположение.

Если вы хотите, чтобы мастер создавал комментарии для выбранных методов, установите флажок Создать комментарии к методу. Эти комментарии позволяют лучше понять, когда вызывается метод и каковы его общие функции.

Диалоговое окно мастера «нестандартное поведение» в Visual Studio.

. zone-end . zone pivot="macos"

Обозреватель проектов Unity

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

 просмотр окна проводника Unity Project.

  • В главном меню Visual Studio выберите Представление > Обозреватель проектов Unity. сочетание клавиш: Alt + Shift + E . zone-end . zone pivot="macos"
  • в Visual Studio для Mac Панель решения автоматически ведет себя следующим образом при открытии проекта Unity. . zone-end

Набор средств Visual Studio для Unity позволяет отлаживать скрипты редакторов и игр для проекта Unity с помощью мощного отладчика Visual Studio.

Отладка в редакторе Unity

. zone-end . zone pivot="macos"

Щелкните воспроизвести в Unity в macOS.

Переключитесь в Unity и нажмите кнопку Воспроизвести, чтобы запустить игру в редакторе. . zone pivot="windows" . zone-end . zone pivot="macos" . zone-end

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

Нажатие кнопки "Остановить" в Visual Studio

В Visual Studio нажмите кнопку Стоп или используйте сочетание клавиш SHIFT + F5.

. zone-end . zone pivot="macos"

Дополнительные сведения об отладчике Visual Studio см. в статье First look at the Visual Studio Debugger (Первое знакомство с отладчиком Visual Studio).

Подключение к Unity и воспроизведение

Для дополнительного удобства кнопку Подключить к Unity можно заменить на режим Подключить к Unity и воспроизвести.

Затем на кнопке "Воспроизведение" появляется метка Подключение к Unity и воспроизведение. Нажатие этой кнопки или использование клавиши F5 приведет к автоматическому переключению на редактор Unity и запуску игры в редакторе, в дополнение к подключению отладчика Visual Studio.

. zone-end . zone pivot="macos" Начать отладку и воспроизведение в редакторе Unity можно за один шаг, непосредственно из Visual Studio для Mac, выбрав конфигурацию Подключение к Unity и воспроизведение.

[!NOTE] Если отладка была запущена с помощью команды присоединить к Unity и воспроизвести конфигурацию, то кнопка " Закрыть " также останавливает редактор Unity.

Отладка сборок проигрывателя Unity

Сборки приложений Unity можно отлаживать с помощью Visual Studio.

Включение отладки скриптов в проигрывателе Unity

Чтобы открыть параметры сборки в Unity, выберите Файл > Параметры сборки.

В окне параметров сборки установите флажки Сборка разработки и Отладка скриптов.

![Настройте параметры сборки Unity для отладки.](../media/vs/vstu-debugging-build-settings.jpg "vstu_debugging_build_settings")

Выбор экземпляр Unity для присоединения отладчика

В главном меню Visual Studio выберите Отладка > Присоединить отладчик Unity.

Подключите отладчик Unity.

В диалоговом окне Выбор экземпляра Unity отображаются сведения о каждом экземпляре Unity, к которому можно подключиться.

Выберите экземпляр Unity, к которому необходимо подключиться.

Project

Имя проекта Unity, который выполняется в этом экземпляре Unity.

Компьютер Имя компьютера или устройства, на котором выполняется этот экземпляр Unity.

Тип Редактор — если этот экземпляр Unity выполняется как часть редактора Unity; Проигрыватель — если этот экземпляр Unity является автономным проигрывателем.

Порт Номер порта UDP-сокета, через который данный экземпляр Unity обменивается данными.

[!IMPORTANT] так как Инструменты Visual Studio для Unity и экземпляр Unity обмениваются данными через сетевой сокет UDP, для разрешения этого брандмауэра может потребоваться правило. При необходимости может появиться запрос на подключение, чтобы VSTU и Unity могли обмениваться данными.

. zone-end . zone pivot="macos"

  • в Visual Studio для Mac в верхнем меню выберите выполнить > присоединить к процессу.
  • В диалоговом окне Присоединение к процессу выберите параметр отладчик Unity в раскрывающемся меню отладчика внизу.
  • Выберите экземпляр Unity из списка и нажмите кнопку присоединить .

Отладка библиотеки DLL в проекте Unity

Многие разработчики Unity создают компоненты кода в виде внешних библиотек DLL, чтобы разрабатываемые ими функции можно было легко совместно использовать с другими проектами. Набор средств Visual Studio для Unity упрощает отладку кода в этих библиотеках DLL без создания проблем для другого кода в проекте Unity.

[!NOTE] В настоящее время набор средств Visual Studio для Unity поддерживает только управляемые библиотеки DLL. Он не поддерживает отладку библиотек DLL машинного кода, например библиотек, созданных на языке C++.

Обратите внимание, что описанный здесь сценарий предполагает, что у вас есть исходный код, то есть вы разрабатываете или повторно используете свой собственный код, или у вас есть исходный код для библиотеки стороннего разработчика и вы планируете его развернуть в проекте Unity как библиотеку DLL. Данный сценарий не описывает отладку библиотеки DLL, для которой у вас нет исходного кода.

Отладка проекта с управляемой библиотекой DLL, используемой в проекте Unity

Добавьте существующий проект библиотеки DLL в решение Visual Studio, которое создается набором средств Visual Studio для Unity. В ряде случаев вы можете создать новый проект с управляемой библиотекой DLL, который будет содержать компоненты кода проекта Unity. В этом сценарии в решение Visual Studio можно добавить новый проект с управляемой библиотекой DLL.

Добавьте существующий проект библиотеки DLL в решение.

В любом случае набор средств Visual Studio для Unity сохраняет ссылку на проект, даже если он должен повторно создать файлы проекта и решения, поэтому эти действия нужно будет выполнить только один раз.

Создайте ссылку на нужный профиль платформы Unity в проекте DLL. В Visual Studio в свойствах проекта DLL для свойства Целевая платформа укажите версию платформы Unity, которую вы используете. Это библиотека базового класса Unity, соответствующая уровню совместимости API, на который ориентирован ваш проект, например библиотека базовых классов Unity full, micro или web. Благодаря этому ваша библиотека DLL не будет вызывать методы платформы, существующие на других платформах или уровнях совместимости, но которые могут отсутствовать в версии платформы Unity, которую вы используете.

Укажите платформу Unity в качестве целевой платформы библиотеки DLL.

Скопируйте библиотеку DLL в папку Asset (ресурсы) своего проекта Unity. В Unity ресурсы представляют собой файлы, которые упаковываются и развертываются вместе с вашим приложением Unity, чтобы их можно было загружать во время выполнения. Так как библиотеки DLL связываются во время выполнения, их необходимо развертывать как ресурсы. Для развертывания в виде ресурса редактору Unity требуется, чтобы библиотеки DLL были помещены в папку Assets вашего проекта Unity. Предусмотрены два способа выполнения этой задачи.

Измените параметры сборки проекта DLL, чтобы добавить выполняемую после сборки задачу, которая скопирует выходные файлы DLL и PDB из выходной папки в папку Активы проекта Unity.

Измените параметры сборки проекта DLL, чтобы сделать выходной папкой папку Assets проекта Unity. Теперь файлы DLL и PDB будут сразу помещаться в папку Assets.

PDB-файлы необходимы для отладки, так как они содержат символы отладки библиотеки DLL и сопоставляют код DLL с формой его исходного кода. Если будет применяться устаревшая среда выполнения, Инструменты Visual Studio для Unity будут использовать сведения из файлов DLL и PDB для создания файла DLL.MDB. Это формат отладочных символов, применяемый устаревшим модулем обработки скрипов Unity. Если будет применяться новая среда выполнения и формат Portable-PDB, Инструменты Visual Studio для Unity не будут пытаться преобразовывать символы, так как новая среда выполнения Unity может самостоятельно обрабатывать файлы Portable-PDB.

См. подробнее сведения о создании PDB-файлов. Если будет применяться новая среда выполнения, убедитесь, что для параметра "Отладочная информация" задано значение "Переносимый" для корректного создания файла Portable PDB. Если будет применяться устаревшая среда выполнения, воспользуйтесь значением "Полный".

Выполните отладку своего кода. Теперь вы можете отлаживать свой исходный код DLL вместе с исходным кодом проекта Unity и использовать все доступные функции, например точки останова и пошаговое выполнение кода.

Для быстрого доступа средств Unity к функциям Visual Studio можно использовать соответствующие сочетания клавиш. Ниже приведен список таких сочетаний клавиш.

Команда Сочетание клавиш Имя контекстной команды
Открыть мастер MonoBehavior CTRL+SHIFT+M EditorContextMenus.CodeWindow.ImplementMonoBehaviours
Открыть обозреватель проектов Unity ALT+SHIFT+E View.UnityProjectExplorer
Доступ к документации по Unity CTRL+ALT+M, CTRL+H Help.UnityAPIReference
Присоединиться к отладчику Unity (проигрыватель или редактор) значение по умолчанию отсутствует Debug.AttachUnityDebugger

Если вас не устраивает сочетание клавиш по умолчанию, его можно изменить. Чтобы узнать, как это сделать, см. статью Определение и настройка сочетаний клавиш в Visual Studio.

. zone-end . zone pivot="macos"

Команда Сочетание клавиш Имя контекстной команды
Открыть мастер MonoBehavior Команда cmd + SHIFT + М EditorContextMenus.CodeWindow.ImplementMonoBehaviours
Доступ к документации по Unity Cmd + ' Help.UnityAPIReference

Если вас не устраивает сочетание клавиш по умолчанию, его можно изменить. Сведения о том, как изменить его, см. в разделе Настройка интегрированной среды разработки.

Базовый класс сценариев Unity MonoBehaviour и GameObject

1. Жизненный цикл MonoBehaviour

Когда мы используем MonoBehaviour, мы должны обращать особое внимание на то, какие функции, которые он может перезаписывать, будут вызываться, когда в игре происходят определенные события. Наиболее переписываемые функции, которые мы чаще всего используем в Unity:

Awake: когда создается сценарий, вызывается Awake. Большинство из нас завершают инициализацию переменных-членов в этом классе.

Обновление: когда игровой кадр начинает воспроизводиться (в данный момент создан экземпляр GameObject), его Обновление вызывается каждый кадр.

LateUpdate: LateUpdate вызывается после вызова всех функций обновления.

FixedUpdate: когда MonoBehaviour включен, его FixedUpdate вызывается каждый фиксированный кадр.

OnEnable: эта функция вызывается, когда объект становится доступным или активированным.

OnDisable: эта функция вызывается, когда объект становится недоступным или неактивным.

OnDestroy: эта функция вызывается, когда MonoBehaviour будет уничтожен.

Давайте используем картинку, чтобы более наглядно проиллюстрировать, как эти классы называются в жизненном цикле MonoBehaviour:


2. Ямы MonoBehaviour

Закрытые (приватные) и защищенные (защищенные) переменные могут отображаться только в экспертном режиме. Свойства не сериализуются и не отображаются на панели просмотра.

Не используйте пространство имен

Не забудьте использовать поиск в кэшированном компоненте, то есть компонент, к которому часто обращаются в долговременном методе MonoBehaviour, лучше всего хранить в качестве закрытой переменной-члена.

В игре часто возникают проблемы, которые требуют определения расстояния между врагом и нами. В настоящее время, если вы хотите найти всех врагов, это, очевидно, слишком большие вычислительные затраты, поэтому лучше всего использовать коллайдер для выражения дальности атаки, а затем коллайдер. IsTrigger установлен в True. Наконец, используйте OnTriggerEnter для определения расстояния в пределах диапазона атаки, что значительно повысит производительность программы.

Три, Monobehaviour общие методы

function Invoke (methodName : string, time : float) : void
Через несколько секунд вызовите метод methodName;

function InvokeRepeating (methodName : string, time : float, repeatRate : float) : void
С первого вызова он вызывается каждый раз repeatRate.

function CancelInvoke () : void
Отмените все вызовы Invoke на этом MonoBehaviour.

function IsInvoking (methodName : string) : bool
Ожидание вызова указанной функции.

function StartCoroutine (routine : IEnumerator) : Coroutine
Во время выполнения сопрограммы вы можете использовать оператор yield в любой позиции. Возвращаемое значение yield контролирует, когда сопрограмма возобновляет выполнение. Сопрограмма превосходна во время выполнения собственного кадра объекта. Сопрограмма не имеет больше накладных расходов в производительности. Функция StartCoroutine возвращается немедленно, но yield может задержать результат. Пока выполнение кооперативной программы не завершено.

Когда создается экземпляр MonoBehaviour, Update вызывается каждый кадр.

LateUpdate вызывается после вызова всех функций обновления. Это можно использовать для настройки порядка выполнения скрипта. Например: когда объект перемещается в обновлении, камера, которая следует за объектом, может быть реализована в LateUpdate.

При обработке Rigidbody вам нужно использовать FixedUpdate вместо Update. Например: при добавлении силы к твердому телу вы должны применить силу к фиксированному кадру в FixedUpdate, а не к кадру в обновлении. (Длина кадра у обоих разная)

Пробуждение используется для инициализации переменных или состояния игры до ее запуска. Он вызывается только один раз за весь жизненный цикл сценария. Awake вызывается после инициализации всех объектов, поэтому вы можете безопасно общаться с другими объектами или искать их с помощью таких функций, как GameObject.FindWithTag. Пробуждение по каждому игровому объекту вызывается в случайном порядке. Следовательно, вы должны использовать Awake для установки ссылок между скриптами и использовать Start для передачи информации. Awake всегда вызывается перед Start. Его нельзя использовать для выполнения скоординированных программ.

Старт вызывается только один раз в жизненном цикле поведения. Разница между ним и Awake заключается в том, что Start вызывается только тогда, когда включен экземпляр скрипта. Вы можете настроить код отложенной инициализации по мере необходимости. Пробуждение всегда выполняется до запуска.

OnMouseEnter /OnMouseOver / OnMouseExit / OnMouseDown / OnMouseUp / OnMouseDrag

OnMouseEnter вызывается, когда мышь входит / плавает / выходит / щелкает / отпускает / перетаскивает GUIElement (элемент GUI) или Collider (тело столкновения).

OnTriggerEnter / OnTriggerExit / OnTriggerStay

OnTriggerEnter вызывается, когда коллайдер входит / выходит / остается на триггере. OnTriggerStay будет вызываться каждый кадр.

OnCollisionEnter / OnCollisionExit / OnCollisionStay

Когда этот коллайдер / твердое тело запускает другое твердое тело / коллайдер, это называется. OnCollisionStay будет вызываться каждый кадр.

В-четвертых, связь между скриптом и GameObject

Сначала будут созданы экземпляры GameObject, которые явно добавлены в иерархию, и порядок, в котором создаются экземпляры GameObject, будет снизу вверх. Во время создания экземпляра GameObject загружается и создается его компонент компонента. Если компонент сценария монтируется, то при создании экземпляра компонента сценария будет вызываться метод Awake сценария, и порядок создания экземпляров компонента также снизу вверх. Игра не начнет воспроизводить кадры, пока не будут созданы все явные объекты GameObject и их компоненты.

Когда создание экземпляра GameObject завершено, начинает играть игровой кадр. Первый кадр каждого сценария вызывает метод Start, а каждый последующий кадр вызывает обновление, а последовательность вызовов каждого сценария в каждом кадре снизу вверх.

Описание: сценарий, прикрепленный к GameObject, будет создан как член GameObject.

4.1 Ссылки на переменные скрипта

Объявите переменные другого скрипта в скрипте. Создать общедоступную переменную типа в ClassA является ClassB.

4.1.1 Ссылка на скрипт для не того же GameObject

детали как следующие:



На этом этапе, если член B в classA хочет сослаться на объект classB из GameObjectB new, просто перетащите GameObjectB в скрипт classA в GameObjectA.

4.1.2 Ссылка друг на друга в одном и том же GameObject

детали как следующие:


В это время я обнаружил, что путем перетаскивания невозможно установить ссылки на classA и classB. Поскольку привязка перетаскивания в редакторе Unity является уровнем GameObject.

Так как же решить проблему взаимных ссылок в это время? В этом случае вам нужно использовать переменную gameObject.

Когда создается экземпляр сценария, смонтированного в GameObject, член gameObject, который наследуется от Monobehavior внутри, будет привязан к монтируемому объекту GameObject. Можно отметить, что в этом примере classA и classB являются компонентами одного и того же GameObject, поэтому вы можете получить ссылку на другую переменную сценария через GetComponent.

4.1.3 Ссылка в GameObject отношения родитель-ребенок

Чтобы продлить задачу на один шаг, два скрипта ClassA, ClassB, но на этот раз не привязаны к одному GameObject, но различаются между двумя GameObjects: Parent (ClassA), Child (ClassB)


Во-первых, давайте попробуем перетаскивать. Несмотря на то, что невозможно перетаскивать ссылки на скрипты (Componet) друг друга в редакторе Unity, можно связать GameObject. Поэтому необходимо создать только две открытые переменные, а затем тип GameObject в Unity. Перетащите ссылки друг на друга и, наконец, вызовите его метод GetComponent через уже связанный gameObject в функции Start.

Действительно, этот метод осуществим, но лучше использовать Transform. Transform - это очень специальный компонент, который сохраняет древовидную структуру отображения между GameObjects, поэтому в приведенном выше примере, когда вы хотите получить доступ к Parent from Child, вам нужно всего лишь написать transform.parent.gameObject в сценарии, соответствующем Child .GetComponent ()

Следует отметить, что Find может найти только Child, для более сложного примера.

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

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

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

Я бы сказал, что вы спрашиваете об автозаполнении, а не о всплывающих подсказках. Версия Unity: 5.5.2f1 / Visual studio 2015 / Visual Studio Tools для Unity установлены

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

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

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

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

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

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

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

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

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

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

Закройте Visual Studio.

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

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

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

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

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

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

Закройте Visual Studio

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

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

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

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

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

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

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

Установите NuGet PackageManager из здесь .

Перезапустите Visual Visual.

См. Этот ответ для получения дополнительной информации.

Спасибо за указатель на разные файлы! Закрытие VS, удаление проектов VS и sln, а затем двойной щелчок по сценарию в Unity (в результате чего регенерируют файлы проекта и повторно открывают VS) исправили это для меня. Я бы рекомендовал попробовать это перед кнопкой «повторно импортировать все», так как это обед / ночь для нетривиальных проектов. Это хороший совет. Надеюсь, что кто-нибудь, читающий это, увидит этот комментарий В большинстве случаев это вызвано созданием новых скриптов или перемещением их в разные папки в Unity. Всякий раз , когда перезапуск Unity и VS не решает, я simoly также удалять *.csproj и *.sln файлы и запустить Unity , чем. Обычно это срабатывает Решение @chrisvarnz сработало для меня после попытки всех этих других предложений. @gollumullog Хорошо. Поскольку это сработало для нескольких людей, я обновил свой ответ, включив это.

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

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

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

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

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

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

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

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

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

Спасибо за помощь! Это сработало, но я чувствую, что мы вернулись в 90-е и нам нужно перезапустить Windows, только на этот раз это VS 2017.

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

Вау! Больше мне ничего не помогло; Переустановите VS, даже переустановив Unity, чтобы он переустановил VS, удалив файлы .sln и .cjsproj, чтобы они были восстановлены. ничего не помогло .. но, наконец, простой щелчок в

Скриншот из visual studio

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

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

Сегодня я столкнулся с теми же проблемами, используя Visual Studio 2017 15.4.5 с Unity 2017.

Мне удалось решить эту проблему, щелкнув правой кнопкой мыши проект в Visual Studio и изменив целевую структуру с 3.5 на 4.5.

Надеюсь, это поможет кому-нибудь еще в подобном сценарии.

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

@singleton указал мне в этом направлении. Вместо изменения целевого объекта в Visual Studio вы должны изменить его в Unity, поскольку проект создается автоматически.

Затем из Unity перейдите в PlayerSettings и в разделе «Other Settings» измените «Scripting Runtime Version» со «Stable 3.5» на «Experimental 4.6».

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

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

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

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

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

Приветствую всех друзья! В прошлой статье я рассказал о настройках качества в окне настроек проекта. Сегодня заключительная статья о настройках проекта, и на очереди у нас сразу три вкладки, а именно это настройки времени, настройки очереди выполнения скриптов и настройки тегов и слоев.

Картинка для привлечения внимания из открытых источников Картинка для привлечения внимания из открытых источников

Script Execution Order settings.

Используйте настройки порядка выполнения скрипта, чтобы указать относительный порядок, в котором Unity вызывает функции событий различных классов MonoBehaviour . Например, вы можете указать, что Unity должен запускать функции событий вашего скрипта Rotation перед запуском функций скрипта MoveForward .

Порядок применяется к каждой категории функции события отдельно, поэтому Unity вызывает любые функции Awake , которые он должен вызвать во время кадра в указанном порядке, а затем вызывает любые функции Update активных объектов GameObjects в том же порядке.

Порядок выполнения скриптов можно настроить в окне параметров проекта. Перейдите в меню: Edit/Project Settings , а затем выберите категорию Script Execution Order .

Используйте кнопку Плюс ( + ), чтобы добавить скрипты в очередь, при этом откроется список, в котором необходимо выбрать имя интересующего вас класса. Чтобы удалить скрипт, используйте кнопку минус ( - ), расположенную справа от каждого элемента в списке.

Чтобы указать порядок выполнения, перетащите элементы в списке в нужное положение или измените порядковые номера класса в списке. Присвоенные номера выражают относительный порядок. Unity выполняет список сверху вниз (от скриптов с большим количеством отрицательных порядковых номеров до скриптов с большим количеством положительных номеров). Unity выполняет любые скрипты, отсутствующие в списке, в течение временного интервала по умолчанию, который происходит после любых скриптов с отрицательными номерами и перед любыми скриптами с положительными номерами, находящимися в очереди выполнения скриптов.

Порядковые номера являются произвольными и не представляют никакой физической величины. Редактор сохраняет эти значения в файлах метаданных скрипта. Вы можете оставить пробелы между номерами, чтобы избежать ненужных изменений файлов при добавлении или перемещении других скриптов в списке.

Порядок выполнения, указанный в этом окне настроек, не влияет на порядок функций, отмеченных атрибутом RuntimeInitializeOnLoadMethod .

Tags and Layers

Настройки тегов и слоев (главное меню: Edit/Project Settings , затем выберите категорию Tags and Layers ) позволяют настроить теги, сортировку слоев и слои.

Читайте также: