Как к Unity подключить Visual Studio 2019
Когда устанавливал Unity, была установлена версия VS 2017, но в данный момент я бы хотел перейти на VS 2019, но в Preferences Unity нет версии VS 2019, хотя она есть на моем компьютере. Как поменять версию VS с 2017 на 2019 в Unity?
Отслеживать
2,665 3 3 золотых знака 10 10 серебряных знаков 20 20 бронзовых знаков
задан 13 фев 2020 в 8:01
danil2283376 danil2283376
43 1 1 серебряный знак 10 10 бронзовых знаков
Вручную найти исполняемый файл VS2019. Там же есть у вас пункт Browse.
13 фев 2020 в 8:05
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
1 способ — Попробуй вот что. Открой скрипт в папке проекта, который ты хочешь отредактировать. Потом дважды на него нажми. Появится вот такое диалоговое окно, а там по пункту Выбрать из установленных выбери тот редактор, который ты хочешь использовать. Теперь Unity всегда будет открывать твой скрипт через выбранный тобою редактор.

2 способ — Вернитесь обратно в это окошко из вашего скриншота, нажмите там на пункт Browse и просто найдите ярлычок вашего желаемого редактора.

Отслеживать
ответ дан 13 фев 2020 в 14:31
178 3 3 серебряных знака 20 20 бронзовых знаков
- c#
- unity3d
- visual-studio
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Разработка игр с помощью Unity и 3D-камеры Intel RealSense

Процесс создания компьютерных игр включает набор стандартных задач, с которыми постоянно приходится сталкиваться разработчикам. Это, к примеру, учет физических законов, столкновение объектов, запуск событий (звуковые сигналы, подсчет очков и т. п.) и ответ на действия игроков, использующих джойстик, мышь и клавиатуру. Реализация этих функций для каждой целевой платформы в отдельности может отнять очень много времени. Чтобы этого избежать, разработчики используют игровой движок с поддержкой стандартной функциональности. Это позволяет уделять больше внимания сложным задачам.
Unity 3D — отличное кроссплатформенное решение от Unity Technologies. Оно предназначено для разработки игр для компьютеров, игровых консолей, мобильных устройств и веб-браузеров. В Unity 3D предусмотрена поддержка различных языков программирования, например C++, C#, Unity Script (похож на JavaScript) и Boo.
Эта статья предназначена как для начинающих специалистов, так и для экспертов. Чтобы помочь тем, кто никогда раньше не работал с Unity, мы начнем с небольшого примера применения этого продукта. Затем я расскажу, как использовать Intel RealSense SDK и 3D-камеру Intel RealSense для отслеживания жестов и как создать простую игру на C#.
Для работы вам потребуется Visual Studio, Unity, Intel RealSense SDK и 3D-камера Intel RealSense.
Загрузка, установка и настройка Visual Studio
Загрузите бесплатную версию Unity. Она работает под ОС Microsoft Windows* и Apple Mac* OS X*. Чтобы завершить установку, пройдите бесплатную регистрацию.
Программа, приведенная в этой статье для примера, написана на языке C#. В качестве кроссплатформенной интегрированной среды разработки в Unity по умолчанию используется MonoDevelop. Unity также можно использовать с Microsoft Visual Studio, что особенно удобно для разработчиков .NET. Для начала нужно подключить Visual Studio к Unity. В раскрывающемся меню выберите Edit -> Preferences…. На экране появится окно настроек. Выберите External Tools на панели с левой стороны (рис. 1). Нажмите MonoDevelop рядом с полем External Script Editor и выберите файл .exe Visual Studio, нажав кнопку Browse…. Установите Visual Studio, используя настройки по умолчанию. Путь к файлу запуска программы должен быть следующим.
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe.
Это все, что требуется для подключения.

Рисунок 1. Выбор Visual Studio* в Unity*
Среда
Перейдем к настройкам среды Unity. Главный экран состоит из нескольких окон. Вы можете разместить их вручную или выбрать стандартное расположение. Мы выбрали ориентацию Tall в раскрывающемся меню Layout в правом верхнем углу экрана.

Рисунок 2. Выбор положения окна
Окно построения сцены и окно игры
Первое большое окно (рис. 3) предназначено для построения сцены, то есть для размещения объектов игры. Обычно для него используется 3D-формат. Чтобы изменить положение объекта сцены, достаточно его перетащить. Сразу над главным экраном расположена вкладка игры. На ней показано готовое изображение, каким его увидит пользователь.

Рисунок 3. Окно построения сцены

Рисунок 4. Окно игры
Окно иерархии
В окне иерархии (рис. 5) представлен список используемых объектов, например предметы из самой игры, камеры, средства освещения сцены, элементы интерфейса и аудиозаписи. Чтобы создать новые объекты, используйте меню GameObject или окно Create.

Рисунок 5. Окно иерархии
Окно свойств
При выборе объекта в окне иерархии на экране появится окно его свойств (рис. 6). Их набор можно расширить, добавив в него дополнительные элементы. Для этого нужно нажать кнопку Add Component. Например, объекту можно назначить свойства твердого тела, чтобы в игре на него действовала гравитация.

Рисунок 6. Окно свойств
Окно проекта
Список файлов проекта, например сцен и объектов игры, аудиозаписей, изображений и сценариев, представлен в окне проекта (рис. 7). При выборе файла на экране появится информация о его свойствах и окно предварительного просмотра. Если два раза щелкнуть файл сценария, он откроется в соответствующей среде разработки.

Рисунок 7. Окно проекта
Создание простой игры
В начале 70-х Нолан Бушнелл, основатель Atari, выпустил игру, которая впоследствии стала очень популярной. Она называлась Pong и представляла собой простейший симулятор настольного тенниса. Игра заключалась в следующем. По экрану движется мячик. Каждый игрок управляет ракеткой, перемещая ее по вертикали. Если кому-то не удается отбить мяч, его соперник получает одно очко. Давайте разберемся, как реализовать эту игру с помощью Unity.
Чтобы создать новый проект, нажмите File -> New Project. Назовите его PingPongUnity.

Рисунок 8. Создание нового проекта
Ракетки
Для начала создадим ракетки. В окне иерархии нажмите Create -> 3D Object -> Cube. Чтобы изменить форму и расположение ракеток, выберите созданный куб и укажите нужные параметры в окне настроек. В нашем примере мы назвали объект Paddle1 и изменили его форму (см. графу Transform). Укажите следующие значения в графе scale X: 0.5, Y:3, Z:1. Укажите следующие координаты в графе Position X: -9, Y: 1, Z: 0. Таким образом мы создали первую ракетку. В окне иерархии нажмите правой кнопкой мыши на ракетку и в контекстном меню выберите Duplicate. На экране появится копия созданной ракетки. Осталось только переименовать ее в Paddle2 и изменить значение X в графе Position на 9.
Чтобы ракетки двигались согласно физическим законам, нам придется добавить компонент RigidBody, нажав кнопку Add Components для каждой из них. Так мы сможем управлять движением ракеток и их столкновением с мячом. Пока что наш мячик просто пролетает сквозь ракетку, а не отскакивает от нее. Это не совсем то, что требуется. Чтобы избежать этого, следует установить определенные ограничения на свойства объектов. Те объекты, которые будут удовлетворять указанным ограничениям, назовем RigidBody. Ракетки могут двигаться только вверх и вниз, так что в графе Freeze Rotation нужно выбрать x, y и z, а в графе Freeze Position — только x.

Рисунок 9. Ракетки
Стенки
Для этой игры также нужно создать две стенки (верхнюю и нижнюю), чтобы мячик отскакивал от них и не улетал за границы поля. Для этого нам снова понадобятся кубические объекты. В окне иерархии еще раз нажмите Create -> 3D Object -> Cube. Назовите созданный объект WallBelow. Он будет чуть длиннее ракеток, поэтому в графе scale укажите следующие значения X: 23, Y: 1, Z: 1. В графе Position укажите следующее X: 0, Y: -5, Z: 0.
Чтобы создать вторую стенку, достаточно скопировать первую и переименовать ее в WallAbove. Теперь просто измените значение Y-Position на 7.

Рисунок 10. Стенки
Мячик
Осталось создать последний, самый важный объект игры — мячик. В наборе стандартных форм, представленном в Unity, уже есть нужная. В окне иерархии нажмите Create -> 3D Object -> Sphere. Измените название на Ball, в графе Position укажите следующие значения X: 0, Y: 1, Z: 0. Чтобы мячик двигался нужным образом, необходимо включить ограничения RigidBody, нажав на кнопку Add Components, и снять галочку Use gravity.

Рисунок 11. Мячик
Изменение угла обзора и освещение сцены
Пока что ракурс выбран неудачно. Чтобы это исправить, нужно изменить настройки камеры. В окне иерархии выберите стандартную камеру Main Camera. Переключите формат обзора с 3D на 2D. Это можно сделать в разделе Projection. Вместо Perspective (3D) выберите Orthographic (2D). Теперь на экране представлена вертикальная проекция сцены. Измените значение параметра Size на 10.
Если требуется повернуть камеру, нажмите значок осей координат.

Рисунок 12. Поворот камеры можно включить, нажав на значок осей координат
Мы установили все необходимые настройки камеры. Однако сцена остается слишком темной. Чтобы добавить освещение, откройте окно иерархии и нажмите Create -> Light -> Directional Light. Все изменения отображены в окне игры.

Рисунок 13. Окно игры
Давайте запустим мячик!
Поле готово, но все объекты пока замерли на месте. Если сейчас начать игру, мячик свалится вниз и этим все закончится. Чтобы это исправить, достаточно добавить в игру несколько строк кода на C#. Нажмите кнопку Create в окне проекта и создайте новый файл сценария под названием Ball для программы на языке C#. Перетащите его на мячик в окне иерархии или в окне отображения сцены, чтобы связать с объектом игры. Теперь при выборе мячика в окне свойств появится информация о файле сценария.
По двойному щелчку файла C# откроется выбранная среда разработки (MonoDevelop или Microsoft Visual Studio). Каждый вновь созданный файл содержит автоматически реализованный стандартный класс. Он называется MonoBehavior и является интерфейсом для Unity API. Метод Start выполняет инициализацию и подготовку к началу игры. Игровая среда, как телевизор, обрабатывает несколько изображений в секунду. Одно изображение называется кадром. Метод Update запускается каждый раз перед показом кадра. Таким образом реализуется то, что мы называем циклом игры. То есть игровые объекты могут действовать независимо от действий игрока.
В нашем случае требуется установить направление движения мячика в начале игры. Это можно сделать в методе Start. См. фрагмент программы ниже.
using UnityEngine; public class Ball : MonoBehaviour < private float _x; private float _y; // Инициализация void Start () < _x = GetRandomPositionValue(); _y = GetRandomPositionValue(); GetComponent().velocity = new Vector3(Random.Range(5,10) * _x, Random.Range(5,10) * _y, 0); Debug.Log("x: " + _x); Debug.Log("y: " + _y); > private float GetRandomPositionValue() < if (Random.Range(0, 2) == 0) < return -1; >return 1; > // Обновление вызывается один раз за кадр void Update () < >>
Фрагмент кода 1. Выбор направления движения мячика. Реализация на языке C#
Раздел компонентов — самая содержательная часть реализации. Для каждой игровой логики предусмотрен свой компонент. В приведенном фрагменте кода для доступа к компоненту Rigidbody текущего объекта игры используется метод GetComponent. Rigidbody отвечает за действие на объект сил гравитации. В программе мы создаем новый вектор Vector3 и присваиваем его velocity (скорость, свойство Rigidbody). Координаты вектора задаются случайным образом.
Запуская игру еще раз, мы видим, что мячик теперь падает в произвольном направлении. Сталкиваясь со стенкой, он начинает двигаться вбок, а нам нужно, чтобы он отскакивал.
Давайте воспользуемся разделом Physic Material и выберем для мячика необходимые физические свойства. В окне проекта нажмите кнопку Create. Укажите имя Bouncy. Осталось только изменить некоторые свойства, чтобы добиться нужной прыгучести мячика. В окне свойств установите значение 0 для параметров Dynamic Friction и Static Friction. Для Bounciness укажите 1. Значение Friction Combine должно быть минимально, а Bounce Combine — максимально.

Рисунок 14. Настройка физических свойств материала
Чтобы применить выбранные настройки к объектам игры, нужно сделать следующее. Нажмите Edit -> Project Settings -> Physics. Перетащите набор свойств под названием Bouncy в набор стандартных свойств Default material. Для параметра Bounce Threshold установите значение 0.1. Теперь мячик будет прыгать как резиновый.

Рисунок 15. Настройка свойств Bouncy в окне PhysicsManager
Управление ракетками при помощи жестов
Игра почти готова. Все объекты находятся на своих местах, и мячик движется, как мы и хотели. Осталось только научиться управлять ракетками. Для этого лучше всего использовать 3D-камеру — новейшее устройство ввода, которое уже широко используют с Microsoft Xbox* и Kinect*, а также встраивают в некоторые новые модели Ultrabook. 3D-камера не так дорого стоит, так что не упустите возможность ее приобрести. Для программной реализации вам потребуется Intel RealSense SDK. Этот комплект можно загрузить бесплатно. Примеры работы с Unity находятся в Intel RealSense SDK. Посмотрите их после завершения установки.

Рисунок 16. Примеры из Intel RealSense SDK
В Unity 3D предусмотрена поддержка подключаемых модулей сторонних производителей, а также Intel RealSense SDK. Чтобы подключить Intel RealSense SDK, добавьте в проект файлы SDK DLL. В окне Unity нажмите Assets -> Import package -> custom package. . Затем выберите файл RSUnityToolkit.unitypackage, расположенный по адресу C:\Program files (x 86) \Intel\RSSDK\framework\Unity. На экране появится диалоговое окно (см. рис. 17). По умолчанию выбраны все файлы. Чтобы снять выбор, нажмите None. Затем выберите только папку подключаемых модулей. При работе с 64-разрядными системами импортированные файлы DLL также нужно будет заменить вручную. Они находятся в папке C:\Program Files (x86)\Intel\RSSDK\bin\x64.

Рисунок 17. Подключение Intel RealSense SDK к Unity* с помощью функции импорта пакета
После подключения можно перейти к реализации управления ракетками. Создадим еще один файл C#. Для этого нажмите кнопку Create в окне проекта. Назовите файл Paddle. Для управления обеими ракетками достаточно одного общего экземпляра. Это существенный момент, поскольку 3D-камера Intel RealSense не поддерживает подключение к нескольким экземплярам. Поэтому, чтобы подключить новый файл, достаточно перетащить его на объект main camera в окне иерархии.
После этого дважды нажмите файл Paddles.cs. Хотя он подключен к главной камере, для работы нам понадобятся объекты игры, соответствующие ракеткам. В Unity подключение нескольких объектов игры определяется в их свойствах. В C# пришлось бы определять дополнительные свойства с помощью get и set, что в Unity делать совсем не обязательно. Нужно только создать для каждой ракетки переменную типа GameObject с модификатором доступа public, как показано в примере ниже. Теперь, чтобы подключить объекты игры, достаточно перетащить их в свойства созданных ракеток.
public class Paddles : MonoBehaviour < public GameObject Paddle1; public GameObject Paddle2; ..
Фрагмент 2. Автоматически определяемые свойства
Для подключения камеры в Intel RealSense SDK реализован класс PXCMSenseManager. Функция Start будет вызвана только один раз, так что в ней лучше всего выполнять все подготовительные действия. Именно поэтому мы выбрали функцию Start для инициализации класса PXCMSenseManager. Распознавание жестов реализовано в модуле QueryHand, к которому мы обращаемся в программе. Для распознавания лица и голоса требуется отдельный модуль. Объявление экземпляра модуля (переменная _pxcmSenseManager) вынесено за пределы функции Start. См. фрагмент программы ниже.
public class Paddles : MonoBehaviour < public GameObject Paddle1; public GameObject Paddle2; private PXCMSenseManager _pxcmSenseManager; private PXCMHandModule _pxcmHandModule; // Инициализация private void Start() < _pxcmSenseManager = PXCMSenseManager.CreateInstance(); if (_pxcmSenseManager == null) < Debug.LogError("SenseManager Initialization Failed"); >else < pxcmStatus pxcmResult = _pxcmSenseManager.EnableHand(); if (pxcmResult != pxcmStatus.PXCM_STATUS_NO_ERROR) < Debug.LogError("EnableHand: " + pxcmResult); >else < _pxcmHandModule = _pxcmSenseManager.QueryHand(); _pxcmSenseManager.Init(); PXCMHandConfiguration configuration = _pxcmHandModule.CreateActiveConfiguration(); configuration.EnableAllGestures(); configuration.ApplyChanges(); configuration.Dispose(); >> > .
Фрагмент кода 3. Подключение 3D-камеры Intel RealSense
Обработка очереди данных, поступающих с камеры, выполняется в функции Update (на каждом шаге цикла игры), так что мы можем определить, распознает камера руку или нет. В нашей реализации левая рука управляет левой ракеткой, правая — правой. Обработка действий для обеих рук полностью совпадает, поэтому мы создадим отдельную функцию MoveBall и будем передавать ей доступ к данным о левой или правой руке в качестве параметра.
Если игрок завершает игру или начинает заново, требуется отключить связанный с камерой экземпляр. Для этого будем использовать функцию OnDisable, к которой автоматически обратится Unity.
// Обновление вызывается один раз за кадр private void Update() < if (_pxcmSenseManager == null) < return; >_pxcmSenseManager.AcquireFrame(false, 0); _pxcmHandModule = _pxcmSenseManager.QueryHand(); PXCMHandData handData = _pxcmHandModule.CreateOutput(); handData.Update(); MoveBall(handData, PXCMHandData.AccessOrderType.ACCESS_ORDER_LEFT_HANDS, Paddle1); MoveBall(handData, PXCMHandData.AccessOrderType.ACCESS_ORDER_RIGHT_HANDS, Paddle2); _pxcmSenseManager.ReleaseFrame(); > private void MoveBall(PXCMHandData handData, PXCMHandData.AccessOrderType accessOrderType, GameObject gameObject) < PXCMHandData.IHand pxcmHandData; if (handData.QueryHandData(accessOrderType, 0, out pxcmHandData) == pxcmStatus.PXCM_STATUS_NO_ERROR) < PXCMHandData.JointData jointData; if (pxcmHandData.QueryTrackedJoint(PXCMHandData.JointType.JOINT_CENTER, out jointData) == pxcmStatus.PXCM_STATUS_NO_ERROR) < gameObject.GetComponent().velocity = new Vector3(-9, jointData.positionWorld.y*100f, 0); > > > private void OnDisable() < _pxcmHandModule.Dispose(); _pxcmSenseManager.Dispose(); >>
Фрагмент кода 4. Управление ракетками при помощи жестов
Перезапуск игры
Мы создали объекты, написали программу, теперь настало время поиграть. Ракетка начнет перемещаться, если движение руки удалось распознать в пределах 1–5 метров от камеры. Ударившись о ракетку, мячик отскочит и будет двигаться в обратном направлении. Если мячик не коснется ракетки и вылетит за пределы поля, вернуть его уже не удастся. В этом случае логично было бы запускать игру заново.
Для этого достаточно дописать всего несколько строчек кода в наш файл Ball.cs. Добавим проверку наличия мячика на поле в функцию Update. Если мячик пропадет из вида, функция Application.LoadLevel перезапустит игру, как показано в программе ниже.
private bool _loaded; // Обновление вызывается один раз за кадр void Update () < if (GetComponent().isVisible) < _loaded = true; >if (!GetComponent().isVisible && _loaded) < Application.LoadLevel(Application.loadedLevel); >>
Фрагмент кода 5. Ball.cs: запуск новой игры, когда мячик пропадает из вида
Публикация игры
Мы не зря старались и создали первую версию игры. Поделиться ей с другими очень просто. Нажмите File | Build Settings (Ctrg + Shift + B). На экране появится диалоговое окно сборки. В нем предложен огромный выбор самых разных платформ. Мы будем использовать ОС Windows (архитектура x86_64). Чтобы запустить компилятор и создать файл *.exe для Windows, достаточно нажать Build. После этого, чтобы начать игру, потребуется 3D-камера Intel RealSense с установленным драйвером.

Рисунок 18. Компиляция игры и создание файла *.exe
Теперь ваша очередь
Мы научились создавать простейшую игру с помощью Unity, но есть еще столько способов ее улучшить! Попробуйте доработать ее, добавьте подсчет очков, звуки и спецэффекты. Загрузите видео на YouTube* и напишите мне по электронной почте, чтобы похвастаться своими успехами. Я уверен, у вас получится отличная игра. На этом все, настало время поиграть!

Рисунок 19. Игра

Рисунок 20. Интерфейс игры
- Блог компании Intel
- Веб-разработка
- Программирование
- Разработка игр
Журнал изменений (Инструменты Visual Studio для Unity, Windows)
C# является преобладающим языком в экосистеме Unity: новые примеры ресурсов написаны на C#, документация Unity будет по умолчанию создаваться на C# — мы удалили нашу базовую поддержку UnityScript и Boo, чтобы активнее сфокусироваться на возможностях C#. В результате теперь решения VSTU создаются только на C# и загружаются гораздо быстрее.
1.8.2.0
Выпущено 7 января 2014 г.
Новые возможности
- Устранена проблема на сетевом уровне обработчика скриптов Unity на Mavericks для удаленного обнаружения редакторов.
- Обрабатываются новые порты для обнаружения удаленных проигрывателей Unity.
- Ссылка на сборку UnityEngine, специфическую для текущего целевого объекта сборки.
- Добавлен параметр для фильтрации файлов, включаемых в создаваемые проекты.
- Добавлен параметр для отключения отправки журналов консоли в список ошибок Visual Studio. Это полезно, если вы используете PlayMaker или Console Pro, так как может быть только один метод обратного вызова, зарегистрированный в Unity для получения журналов консоли.
- Добавлен параметр для отключения создания MDB-символов отладки. Это полезно, если вы сами создаете MDB-файлы.
Исправленные ошибки
- Исправлена регрессия при открытии файлов в VS из Unity >= 4.2, потеряв IntelliSense.
- Исправлены наши диалоговые окна VS для обработки пользовательских тем.
- Устранено закрытие контекстного меню для UPE.
- Предотвращение аварийного завершения работы в Unity, когда созданная сборка, специфическая для версии, не синхронизирована.
1.8.1.0
Выпущено 21 ноября 2013 г.
Новые возможности
- Изменены мастера MonoBehaviour с API-интерфейсами Unity 4.3.
- Мастера MonoBehaviour фильтруют API-интерфейсы Unity в зависимости от версии, которую вы используете.
- Добавьте ссылку на System.Xml.Linq в проекты для Unity > 4.1.
- Переработаны наши вызовы в Debug.Log (они больше не включают в сообщение начало трассировки стека).
Исправленные ошибки
- Исправлена ошибка, которая могла влиять на обработку по умолчанию файлов JavaScript в Visual Studio.
- Удален белый пиксель, появляющийся в VS.
- Исправлено удаление сборки UnityVS.VersionSpecific, если она отмечена диспетчером SCM как доступная только для чтения.
- Исправлены исключения при создании сокетов в пакете UnityVS.
- Устранена возможность аварийного завершения работы в Visual Studio при загрузке стоковых изображений из сборок Visual Studio.
- Исправлена ошибка при создании UnityVS.VersionSpecific для исходных сборок Unity.
- Устранено возможное замораживание при открытии сокета в пакете Unity.
- Исправлена обработка проекта Unity, в имени которого имеется символ дефиса (-).
- Исправлена ошибка при открытии скриптов из Unity — не нарушается порядок ALT+TAB для Unity версии 4.2 и выше.
1.8.0.0
Выпущено 24 сентября 2013 г.
Новые возможности
- Значительно повышена скорость подключения отладчика.
- Автоматическая обработка перехода к файлу и строке в Unity версии 4.2 и выше.
- Условные точки останова.
- Генератор файлов проекта теперь обрабатывает шаблоны T4.
- Мастера MonBehavior обновлены новыми API-интерфейсами.
- Документация IntelliSense на языке C# для типов Unity.
- Вычисление арифметических и логических выражений.
- Лучшее обнаружение удаленных редакторов для предварительного просмотра удаленной отладки.
Исправленные ошибки
- Исправлена ошибка, когда происходила утечка потока в VS после отсоединения отладчика.
- Удален белый пиксель, появляющийся в VS.
- Исправлена обработка щелчков мыши на значке строки состояния.
- Исправлено создание ссылок со сборками в папках Plugins.
- Исправлено создание сокетов из пакета UnityVS в случае исключений.
- Исправлено обнаружение новых версий UnityVS.
- Исправлен запрос диспетчера лицензий, если истек срок действия лицензии.
- Исправлена ошибка, когда список процессов мог отображаться пустым в присоединенном отладчике в окне процессов в VS.
- Исправлено изменение логических значений в локальном представлении.
1.2.2.0
Выпущено 9 июля 2013 г.
Исправленные ошибки
- Обработка полных имен в вычислителе выражений.
- Устранена возможность зависания, связанного с обработкой исключений, когда обработчик скриптов Unity отправляет нам неверные данные кадра стека.
- Исправлен процесс сборки для целевых веб-объектов.
- Исправлена ошибка, которая могла происходить, если при запуске Visual Studio удаленный файл находился в списке файлов, открываемых при запуске.
- Исправлен метод UnityVS.OpenFile для обработки файлов, не являющихся скриптами, например скомпилированных шейдеров.
- Теперь мы ссылаемся на Boo.Lang и UnityScript.Lang из всех проектов C#.
- Исправлено создание ссылок в проектах, если проект содержит специальные символы.
- Устранена проблема VS, когда вызовы методов удаленных проектов приводили к открытию нескольких окон NullReferenceException MessageBox.
- Исправлена обработка сборок бета-версии Unity 4.2.
1.2.1.0
Выпущено 9 апреля 2013 г.
Исправленные ошибки
- Исправлено локальное развертывание сборок Unity для автозавершения в случае ошибки ввода-вывода (например, файлы, доступные только для чтения, или файлы, заблокированные системой Visual Studio).
- Исправлена регрессионная ошибка: событие открытия скрипта из Unity не должно затрагивать файл, если он уже был открыт в Visual Studio.
- Исправлена проблема производительности для новой обработки исключений.
- Исправлена привязка точек останова в некоторых внешних библиотеках DLL.
1.2.0.0
Выпущено 25 марта 2013 г.
Новые возможности
- Значительно повышена скорость подключения отладчика.
- Обозреватель проектов Unity оптимизирован для крупных проектов.
- Учитываются параметры Visual Studio для остановки (или отсутствия остановки) при обработанных и необработанных исключениях.
- Учитывается параметр Visual Studio для вызова ToString для локальных переменных.
- Добавьте новое меню Отладка —> подключить отладчик Unity, который можно использовать для отладки игроков Unity.
- Сохранение пользовательских проектов, добавляемых в решение UnityVS после создания файла решения.
- Добавьте новое сочетание клавиш CTRL+ALT+M —> CTRL+H, чтобы отобразить документацию по Unity для функции Unity или члена в позиции в виде курсора.
- Учитываются RSP-файлы ответа компилятора при компиляции из Visual Studio.
- Деконструирование типов, создаваемых компилятором, для отображения переменных при отладке методов генератора.
- Упрощение удаленной отладки путем удаления необходимости настройки общей папки для Unity. Теперь нужно просто иметь доступ к проекту Unity из Windows.
- Установка пользовательского профиля Unity как стандартного целевого профиля .NET. Это устраняет все ложные срабатывания, которые может показывать ReSharper.
- Реализован обход ошибки обработчика скриптов Unity, поэтому отладчик не будет останавливаться на неправильно зарегистрированных потоках.
- Переработано средство открытия файлов, чтобы избежать состояния гонки в VS, когда было заявлено о возможности открытия файлов, в то время как при выполнении запроса на открытие файла происходил сбой.
- UnityVS теперь предлагает обновить сборку во время выполнения VS сборки проекта, а не при сохранении файла.
Исправленные ошибки
- Исправлен наш пользовательский профиль .NET
- Исправлена интеграция использования тем. Это устраняет наши проблемы с темной темой VS 2012.
- Исправлен ярлык быстрого поведения в VS 2012.
- Устранена проблема пошагового выполнения, когда при отладке неглавный поток мог попасть на точку останова.
- Исправлено автозавершение UnityScript и Boo псевдонимов типов, например int.
- Устранено исключение при записи новой строки UnityScript или Boo.
- Устранены исключения в меню Unity, когда решение не было загружено.
- Исправлена ошибка UVS 48: ввод двойных кавычек иногда вызывает ошибку и прерывает все функции (автозавершение, выделение синтаксиса и т. д.).
- Исправлена ошибка "UVS-46: двойное открытие файла скрипта (UnityScript) при щелчке списка ошибок в Visual Studio".
- Исправлена ошибка "UVS-42: значок подключения Unity в строке состояния не обрабатывает события мыши в VS 2012".
- Исправлена ошибка "UVS-44: сочетание клавиш CTRL+SHIFT+Q недоступно в VS 2012 для Quick MonoBehaviours".
- Исправлена ошибка "UVS-40: выбранные элементы в обозревателе проектов Unity являются нечитаемыми, когда окно неактивно в "темной" теме VS2012".
- Исправлена ошибка "UVS-39: проблема при разметке escape-строк".
- Исправлена ошибка "UVS-35: вызов ToString для объектов при проверке переменных".
- Исправлена ошибка "UVS-27: окно перехода к символу не согласуется с "темной" темой в VS2012".
- Исправлена ошибка "UVS-11: локальные переменные в сопрограммах".
1.1.0.0 — бета-версия
Выпущено 9 марта 2013 г.
1.0.13.0
Выпущено 21 января 2013 г.
Исправленные ошибки
- Устранена блокировка Visual Studio, которая могла происходить, если целевой отлаживаемый объект отправляет недопустимые события потока. Это, как правило, происходит при отладке удаленного Unity в OSX.
- Устранена блокировка Visual Studio, которая могла происходить, если исключение завершает работу отладчика.
- Исправлены наши вспомогательные методы MonoBehavior, когда метод MonoBehavior на C# находится в пространстве имен.
- Исправлены подсказки отладчика для UnityScript в Visual Studio 2012.
- Исправлено создание проекта, когда из Unity изменяются только константы отладки.
- Исправлена навигация в обозревателе проектов Unity с помощью клавиатуры.
- Исправлено выделение цветом escape-строк в UnityScript.
- Исправлено наше средство открытия файлов для более качественного определения имени проекта при использовании за пределами Unity. Это необходимо в том случае, когда пользователь использует средство открытия файлов стороннего разработчика в Unity, которое делегирует в UnityVS.
- Исправлена обработка длинных сообщений, отправляемых из Unity в UnityVS. Раньше длинные сообщения могли вызывать аварийное завершение работы нашей подсистемы обмена сообщениями в UnityVS. В результате иногда UnityVS не могла открыть файл из Unity.
1.0.12.0
Выпущено 3 января 2013 г.
Исправленные ошибки
- Устранена блокировка Visual Studio, которая могла происходить, если в Visual Studio удалялась точка останова.
- Исправлена ошибка, когда после перекомпиляции Unity скриптов игр не срабатывали некоторые точки останова.
- Исправлен отладчик: теперь он правильно уведомляет Visual Studio, когда точки останова оказываются несвязанными.
- Устранена проблема регистрации, которая могла мешать отладчику Visual Studio отлаживать нативные программы.
- Исправлено исключение, которое могло происходить при вычислении выражений UnityScript и Boo.
- Исправлена регрессионная ошибка: изменение уровня API .NET в Unity не запускало обновление файлов проекта.
- Исправлена ошибка API, когда пользовательский код не мог участвовать в обработчике обратного вызова журнала.
1.0.11.0
Выпущено 28 ноября 2012 г.
Новые возможности
- Официальная поддержка Unity 4.
- Управление скриптами в обозревателе проектов Unity.
- Интеграция с окном "Перейти к" в Visual Studio.
- Реализован синтаксический анализ информационного консольного сообщения, благодаря чему при щелчке в списке ошибок вы переходите к первому кадру стека с символами.
- Добавлен API , позволяющий пользователю участвовать в создании проекта.
- Добавлен API , позволяющий пользователю участвовать в LogCallback.
Исправленные ошибки
- Исправлена регрессионная ошибка: поведение в фоновом режиме обозревателя проектов Unity в Visual Studio 2012.
- Исправлено создание проекта для пользователей полного профиля .NET.
- Исправлено создание проекта для пользователей целевого веб-объекта.
- Исправлено создание проекта — символы компиляции DEBUG и TRACE включаются так же, как это делает Unity.
- Устранено аварийное завершение работы при использовании специальных символов в окне перехода к символу.
- Устранено аварийное завершение работы, если мы не можем вставить наш значок в строку состояния Visual Studio.
1.0.10.0
Выпущено 9 октября 2012 г.
Исправления ошибок
- Исправлено поведение в фоновом режиме обозревателя проектов Unity в Visual Studio 2010.
- Исключена возможность зависания Visual Studio, которое могло происходить, если UnityVS пытался присоединить отладчик к Unity, интерфейс отладчика которого ранее аварийно прекратил работу.
- Исключена возможность зависания Visual Studio, которое могло происходить, когда была задана точка останова и происходила перезагрузка AppDomain.
- Исправлен способ извлечения сборок из Unity, чтобы избежать блокировки файлов и не мешать процессу сборки Unity.
1.0.9.0
Выпущено 3 октября 2012 г.
Исправленные ошибки
- Исправлено создание проекта, когда проект Unity включал фактические ресурсы JavaScript.
- Исправлена обработка ошибок при вычислении выражений.
- Исправлено задание новых значений в полях типов значений.
- Устранены возможные побочные эффекты при наведении указателя мыши на выражения в редакторе кода.
- Исправлен поиск типов в загруженных сборках для вычисления выражений.
- Исправлена ошибка "UVS-21: назначение для объектов Unity не работает".
- Исправлена ошибка "UVS-21: недопустимый указатель при вызове метода в Unity Math API".
1.0.8.0
Выпущено 26 сентября 2012 г.
Исправленные ошибки
- Исправлен код, с помощью которого наше средство открытия скриптов получало путь к проекту: теперь гарантируется, что оно способно открывать как файлы Visual Studio, так и скрипты.
- Исправлена ошибка с точками останова, созданными во время сеанса отладки, которые могли привести к блокировке Visual Studio.
- Исправлена регистрация UnityVS в Visual Studio 2010.
1.0.7.0
Выпущено 14 сентября 2012 г.
Новые возможности
- Поддержка Visual Studio 2012.
Исправленные ошибки
- Исправлено создание файлов проекта редактора и подключаемых модулей: теперь они соответствуют поведению Unity.
- Исправлено преобразование PDB-символов в Unity 4.
Вследствие поддержки Visual Studio 2012 нам пришлось переименовать несколько файлов, а некоторые другие переместить. Пакет UnityVS для импорта Unity теперь называется UnityVS 2010 или UnityVS 2012 (для Visual Studio 2010 или Visual Studio 2012 соответственно). Эта версия требует пересоздать файлы проекта UnityVS.
1.0.6.0 — внутренняя сборка
Выпущено 12 сентября 2012 г.
1.0.5.0
Выпущено 10 сентября 2012 г.
Исправленные ошибки
- Исправлено создание файлов проекта, когда скрипты или шейдеры имели недопустимый XML-символ.
- Исправлено обнаружение экземпляров Unity, когда Unity был подключен к серверу Asset. Это приводило к ошибкам при открытии файлов из Unity и автоматическому подключению отладчика Visual Studio.
1.0.4.0
Выпущено 5 сентября 2012 г.
Новые возможности
- Автоматическое преобразование отладочных символов в Unity. Если в папке Asset имеется сборка .NET DLL со связанным файлом PDB, просто повторно импортируйте сборку, и UnityVS преобразует PDB-файл в файл отладочных символов, который понимает обработчик скриптов Unity, и вы сможете пошагово работать со своими сборками .NET из UnityVS.
Исправленные ошибки
- Устранена возможность аварийного завершения работы UnityVS во время отладки вследствие исключений, которые происходят при работе методов или свойств внутри Unity.
1.0.3.0
Выпущено 4 сентября 2012 г.
Новые возможности
- Новый параметр конфигурации, позволяющий отключить UnityVS открытие файлов из Unity.
Исправленные ошибки
- Исправлено создание ссылок на UnityEditor для проектов, не являющихся редакторами.
- Исправлено определение символа UNITY_EDITOR для проектов, не являющихся редакторами.
- Устранена возможность произвольного аварийного завершения работы VS из-за нашей пользовательской строки состояния.
1.0.2.0
Выпущено 30 августа 2012 г.
Исправленные ошибки
- Устранен конфликт с отладчиком PythonTools.
- Исправлены ссылки на Mono.Cecil.
- Исправлена ошибка в коде извлечения сборок скриптов из Unity с помощью Unity 4 b7.
1.0.1.0
Выпущено 28 августа 2012 г.
Новые возможности
- Поддержка предварительного просмотра для бета-версии Unity 4.0.
Исправленные ошибки
- Исправлено отображение свойств, которое приводило к исключениям.
- Исправлен режим сортировки базовых объектов по убыванию при просмотре объектов.
- Исправлен код, отображающий пустой раскрывающийся список для точки вставки в мастере MonoBehavior.
- Исправлено поведение автозавершения для библиотек DLL в папке Asset для UnityScript и Boo.
1.0.0.0 — начальный выпуск
Выпущено 22 августа 2012 г.
Использование Vuforia Engine с Unity
Vuforia Engine предоставляет в HoloLens важную возможность — возможность подключения интерфейсов дополненной реальности к определенным изображениям и объектам в среде. Эту возможность можно использовать для наложения пошаговых инструкций поверх оборудования для промышленного предприятия или добавления цифровых функций и возможностей в физический продукт или игру.
Vuforia Engine предлагает широкий спектр функций и целевых объектов, которые делают процесс разработки дополненной реальности более гибким. Одна из наших новейших функций, Vuforia Model Targets, является ключевой возможностью для коммерческого и промышленного использования. Целевые объекты модели позволяют приложениям распознавать физические объекты, такие как машины, автомобили или игрушки, и отслеживать их на основе САПР или цифровой трехмерной модели. Для промышленного использования эта функция может предоставить сборщикам и техническим специалистам по обслуживанию инструкции по работе с AR и процедурные инструкции на заводе или в полевых условиях.
Существующие приложения Vuforia Engine, созданные для телефонов и планшетов, можно легко настроить в Unity для работы на HoloLens. Вы даже можете использовать Vuforia Engine, чтобы использовать новое приложение HoloLens на планшетах с Windows 10, таких как Surface Pro и Surface Book.
Получить инструменты
Установите рекомендуемые версии Visual Studio и Unity, а затем настройте Unity для использования Visual Studio и предпочтительной интегрированной среды разработки и компилятора.
При установке Unity обязательно установите серверную часть сценариев IL2CPP для Магазина Windows.
Добавьте пакет Vuforia Engine, как описано здесь.
Начало работы с Vuforia Engine
Лучшей отправной точкой для изучения Vuforia Engine и HoloLens является пример HoloLens для Vuforia Engine (доступный в хранилище активов Unity). Пример предоставляет полный проект HoloLens, включая предварительно настроенные сцены, которые можно развернуть в HoloLens.
В сценах показано, как использовать Vuforia Image Targets для распознавания изображения и дополнения его цифровым содержимым в интерфейсе HoloLens. Пример HoloLens подсистемы Vuforia также содержит сцену, показывающую использование целевых объектов модели и VuMarks на HoloLens. Вы можете легко заменить собственное содержимое в сценах, чтобы поэкспериментировать с созданием приложений HoloLens, использующих Vuforia Engine.
Настройка приложения Vuforia для HoloLens
Разработка приложения Vuforia Engine для HoloLens по сути не отличается от разработки приложений Vuforia Engine для других устройств. Затем можно применить параметры и конфигурации сборки, описанные в разделе ниже. Это все, что необходимо, чтобы Vuforia Engine мог работать с системами пространственного сопоставления HoloLens и отслеживания позиций.
Сборка и запуск примера подсистемы Vuforia для HoloLens

- Скачайте пример подсистемы Vuforia для HoloLens из хранилища активов Unity
- Применение рекомендуемых параметров подсистемы Unity для управления питанием и производительностью
- Добавьте пример сцен в сцены в разделе Сборка.
- В разделе Параметры сборки переключите платформу сборки на UWP , нажав кнопку Добавить открытые сцены .
- Нажмите кнопку Параметры проигрывателя .
- Щелкните значок UWP и разверните раздел Параметры XR .
- Убедитесь, что включена поддержка виртуальной реальности .
- В разделе Пакеты SDK для виртуальной реальности убедитесь, что:
- Окно Смешанная реальность включено в список, и включен параметр Включить общий доступ к буферу глубины.
- Для параметра Depth Format (Формат глубины ) задана 16-разрядная глубина.
- Убедитесь, что для режима отрисовки стерео задано значение Однопрохожий экземпляр.
- Разверните раздел Параметры публикации .
- В разделе Возможности убедитесь, что выбраны Internet Client, WebCam, Microphone и SpatialPerception .
- ПРИМЕЧАНИЕ. SpatialPerception следует выбирать только в том случае, если вы планируете использовать API Surface Observer.
- В разделе Поддерживаемые семейства устройств убедитесь, что выбран параметр Голографический .
- Разверните раздел Разрешение и презентация .
- Отключите параметр Запуск в фоновом режиме , чтобы Vuforia Engine приостанавливался при переводе приложения в фоновый режим и снова смог получить доступ к камере при возобновлении работы приложения.
- В раскрывающемся списке Ориентация по умолчанию убедитесь, что выбран параметр Альбомная слева .
- Вернитесь в окно Параметры сборки и выберите Сборка , чтобы создать проект Visual Studio.
- Выполните сборку исполняемого файла из Visual Studio и установите его на устройстве HoloLens.
Портал разработчика Vuforia
Разработчикам, желающим создать собственные возможности дополненной реальности с помощью Vuforia Engine и HoloLens, следует зарегистрироваться на портале разработчика Vuforia на developer.vuforia.com. На портале разработчики имеют доступ к форумам Vuforia Engine , где они могут присоединиться к обсуждениям сообщества, библиотеке с подробной документацией по всем функциям подсистемы Vuforia и диспетчеру целевых объектов Vuforia, где пользователи могут создавать собственные пользовательские целевые объекты. Разработчики также могут зарегистрироваться для получения бесплатной лицензии разработчика с помощью диспетчера лицензий Vuforia.
Отслеживание устройств с помощью Vuforia
Отслеживание устройств поддерживает отслеживание, даже если целевой объект больше не отображается. Он автоматически включается для всех целевых объектов при включении средства отслеживания позиционных устройств. Для приложений HoloLens средство отслеживания позиционных устройств запускается автоматически в Unity.
Vuforia Engine автоматически сливает позы из отслеживания камеры и пространственного отслеживания HoloLens, чтобы обеспечить стабильные позы цели независимо от того, виден ли целевой объект камерой или нет.
Так как процесс обрабатывается автоматически, разработчик не требует программирования.
Ниже приведено общее описание процесса.
- Целевой трекер Vuforia распознает целевой объект
- Затем выполняется инициализация целевого отслеживания
- Положение и поворот целевого объекта анализируются, чтобы обеспечить надежную оценку положения для HoloLens
- Vuforia Engine преобразует позу целевого объекта в пространство координат пространственного сопоставления HoloLens
- HoloLens берет на себя отслеживание, если целевой объект больше не отображается. Всякий раз, когда вы снова посмотрите на целевой объект, Vuforia будет продолжать точно отслеживать изображения и объекты.
Целевые объекты, которые обнаружены, но больше не отображаются, отображаются как EXTENDED_TRACKED. В таких случаях скрипт DefaultTrackableEventHandler, используемый для всех целевых объектов, продолжает отображать содержимое расширения. Разработчик может управлять этим поведением, реализовав пользовательский скрипт обработчика отслеживаемых событий.
Режим производительности с подсистемой Vuforia
С помощью подсистемы Vuforia можно управлять производительностью в HoloLens, чтобы масштабировать возможности дополненной реальности и уменьшать рабочую нагрузку на ЦП. Подсистема Vuforia предлагает три режима, которые можно выбрать: по умолчанию, для оптимизации скорости и для оптимизации качества.
- MODE_OPTIMIZE_SPEED позволяет свести к минимуму рабочую нагрузку на устройстве HoloLens и отлично подходит для расширения возможностей дополненной реальности. Мы рекомендуем использовать ситуации, когда приложение отслеживает статические объекты или целевые объекты.
- MODE_DEFAULT — это обычный режим, который можно использовать в большинстве сценариев.
- MODE_OPTIMIZE_QUALITY лучше для отслеживания перемещаемых целевых объектов или целевых объектов модели, которые вы ожидаете получить.
Настройка режима
Чтобы изменить режим производительности в Unity, перейдите к конфигурации Vuforia (CTRL+SHIFT+V/ CMD+SHIFT+V), которая находится в качестве компонента в ARCamera GameObject.
- Выберите раскрывающееся меню режим устройства камеры и выберите один из трех вариантов.
См. также статью
- Установка средств
- Системы координат
- Пространственное сопоставление
- Камера в Unity
- Создание и развертывание решения Visual Studio Unity в Hololens
- Документация по Vuforia: начало работы с Vuforia Engine для разработки для Windows 10
- Документация по Vuforia: начало работы с Vuforia Engine в Unity
- Документация по Vuforia: Работа с примером HoloLens в Unity
- Документация по Vuforia: Отслеживание устройств в Vuforia
- Документация по Vuforia: Частота кадров и оптимизация производительности
