Как да създадете първото си приложение HoloLens с Unity

HoloLens на Microsoft е доста страховито страхотно. Бях запознат с него на стажа си това лято и се развих за него.

Приложенията на HoloLens се създават, използвайки DirectX с C ++ или Unity с C #. Открих, че обикновено е по-бързо и лесно да стартирате приложение и да работите с Unity.

В тази статия ще настроим Unity за разработване на HoloLens, ще създадем интерактивен куб и ще завъртим емулатора на HoloLens, за да можете да видите вашето творение. Тази статия е предназначена за начинаещи в Unity, така че ако имате опит с редактора, бих препоръчал да разгледате уроците на Microsoft.

Предпоставки

  1. Компютър с Windows 10 с актуализация от април 2018 г.
  2. Емулаторът HoloLens, който можете да изтеглите от тук
  3. Visual Studio 2017 - изданието на Общността е добре
  4. Unity - Уверете се, че сте добавили вътрешния компонент за скриптове на Windows .NET по време на инсталацията
  5. Комплектът HoloToolKit

Можете да намерите пълния изходен код тук.

Настройвам

Отворете Unity. Ако за първи път използвате редактора, ще бъдете подканени да влезете или да се регистрирате. Бих препоръчал Unity Personal, освен ако не планирате да си осигурите приходи от приложението си.

След като влезете, създайте нов проект и въведете име. Трябва да бъдете посрещнати с този екран, след като проектът завърши първоначалната настройка.

Щракнете с десния бутон върху папката „Активи“ в долния ляв ъгъл. Придвижете се до Импортиране на пакет -> Персонализиран пакет и отворете файла за единство HoloToolKit, който изтеглихме по-рано. Ще се появи изскачащ прозорец Unity, щракнете върху Всички и импортирайте активите.

След това ще създадем нашата сцена. Изберете File -> New Scene и го запазете като Main.

Unity се нуждае от специална конфигурация, за да изгради проект за HoloLens. За щастие HoloToolKit има помощни скриптове, които правят тази конфигурация вместо нас. В горната лента с инструменти изберете Mixed Reality Toolkit -> Configure -> Apply Mixed Reality Project Settings. Използвайте стойностите по подразбиране. След като конфигурацията приключи, приложете настройките за сцена на смесена реалност. Изтрийте GameObject на Directional Light.

Страхотно! Досега сме импортирали HoloToolKit и сме настроили Unity за разработка на HoloLens. В следващия раздел ще ви запозная с основите на Unity и след това ще получим куб, който да се изобрази на екрана.

Запознаване с редактора

Ето как трябва да изглежда редакторът в този момент. Обърнете внимание на трите зони, в които сте затворени:

Червената област вляво е панелът за йерархия на сцената. Тук можем да добавим нови GameObjects и да получим общ преглед на текущото приложение на високо ниво.GameObject е основен клас за всички обекти на Unity. Те могат да бъдат физически обект като куб или колекция от скриптове като Input Manager в сцената.

Долната синя зона съдържа менюто с активи и конзолата. Менюто с активи е точно това, което звучи - съдържа C # скриптове, материали, сглобяеми елементи и мрежи, необходими за стартирането на приложението ви.

Правата зелена зона е менюто на инспектора. Тук можете да добавяте и модифицирате компонентите на вашите GameObjects. Компонентите са тези, които изграждат поведението на вашите GameObjects. Те определят външния вид, интерактивността и физиката на своя родител.

Създаване на куб

Сега ще получим първия си GameObject, който да се изобрази на екрана. В панела за йерархия на сцената щракнете с десния бутон и изберете 3D обект -> Куб. В редактора трябва да се появи куб.

Щракнете двукратно върху Куб в панела в йерархията и в десния инспектор панел променете позицията на (0,0,2). Задайте скалата на (.25, .25, .25). Вашият инспекторски панел трябва да изглежда така:

Хубаво! Нека да преминем през стъпките за изграждане, за да можем да видим нашия куб в емулатора HoloLens.

В Unity изберете File-> Build Settings. Изскачащият прозорец за изграждане трябва да се появи, затова натиснете бутона за изграждане. В изскачащия прозорец на папката създайте нова папка, наречена App, и я изберете като дестинация за изграждане.

След като компилацията завърши, отворете решението на Visual Studio в папката App. Променете опциите за отстраняване на грешки на Release, x86 и насочете емулатора HoloLens. Лентата с опции трябва да изглежда така:

Стартирайте решението и след стартирането на емулатора и зареждането на приложението ви трябва да видите куба си на екрана.

Осъществяване на куба интерактивен

След като разбрахме как да вкараме куб в нашето приложение, нека накараме куба да направи нещо. Когато погледнем куба, той ще се завърти и когато щракнем върху куба, той ще се увеличи по размер.

Придвижете се обратно до Unity и създайте нов скрипт в панела с активи, наречен InteractiveCube. За да създадете нов скрипт, щракнете с десния бутон върху панела с активи и изберете Create -> C # script.

За да добавите скрипта към куба, уверете се, че кубът е избран и плъзнете и пуснете скрипта върху контролния панел. Тя трябва да изглежда така:

Щракнете двукратно върху скрипта в раздела активи и трябва да се появи екземпляр на Visual Studio.

Импортирайте HoloToolkit.Unity.InputModule в горната част на нашия скрипт и направете InteractiveCube разширяване на IFocusable и IInputClickHandler. Нашият код трябва да изглежда така:

using HoloToolkit.Unity.InputModule;
public class InteractiveCube : MonoBehaviour, IFocusable, IInputClickHandler {...} 

Чрез разширяване на интерфейсите IFocuable и IInputClickHandler, нашият скриптов компонент позволява на родителския GameObject да се абонира за събития за фокусиране и щракване.

Нека накараме куба да се върти, когато погледът ни е върху него. Интерфейсът IFocusable изисква от нас да внедрим два публични метода на void: OnFocusEnter и OnFocusExit. Създайте частно булево поле и го наречете Rotating. Когато фокусираме куба, го задайте на true, а когато фокусът ни излезе, го задайте на false. Нашият код трябва да изглежда така:

public bool Rotating;
public void OnFocusEnter(){ Rotating = true;}
public void OnFocusExit(){ Rotating = false;}

Ще направим реално въртене в Update (). Update () е специален метод на Unity, който се нарича всеки кадър. За да контролирате скоростта на въртене, добавете публично плаващо поле с име RotationSpeed. Всяко публично поле в компонент може да бъде коригирано и инициализирано в редактора Unity.

public float RotationSpeed;
void Update() { if (Rotating) transform.Rotate(Vector3.Up * Time.deltaTime * RotationSpeed);}

В Unity преобразуването се използва за управление на физическите атрибути като размер, въртене и позиция на GameObject. Въртим родителския GameObject около оста y с една степен в секунда, умножена по скоростта.

За да накарате куба да реагира на клик събития, добавете метода OnInputClicked, изискван от IInputClickHandler. Създайте публична променлива Vector3, наречена ScaleChange. В метода OnInputClicked ще увеличим мащаба на куба чрез ScaleChange.

public Vector3 ScaleChange;
public void OnInputClicked(InputClickedEventData eventData) { transform.localScale += ScaleChange;}

След като приключихме със скрипта, се върнете обратно към Unity. Уверете се, че обектът Cube е избран и задайте променливите Speed ​​и ScaleChange на 50 и (.025, .025, .025) съответно. Чувствайте се свободни да експериментирате с различни стойности! Нашият скрипт трябва да изглежда така:

Страхотно! Завършихме скрипта InteractiveCube. Изградете приложението си от редактора Unity и стартирайте решението от Visual Studio.

Обобщение

В това ръководство научихте как да настроите Unity за разработване на HoloLens, да създадете интерактивен GameObject и да стартирате приложението си в емулатора.

Ако харесвате разработката на HoloLens, препоръчвам ви да преминете през уроците на Microsoft Academy. Те подробно разглеждат различните ключови концепции на HoloLens и ви превеждат през създаването на някои доста страхотни приложения.

Ако статията ви е харесала или имате обратна връзка, оставете коментар по-долу!