Unity для разработчика. Мобильные мультиплатформенные игры [Джон Мэннинг] (pdf) читать постранично, страница - 76

-  Unity для разработчика. Мобильные мультиплатформенные игры  (пер. А. Киселев) (и.с. Бестселлеры o’reilly) 9.49 Мб, 352с. скачать: (pdf) - (pdf+fbd)  читать: (полностью) - (постранично) - Джон Мэннинг - Пэрис Батфилд-Эддисон

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

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

Создание своего мастера   301

 Собственные редакторы свойств (property drawers), позволяющие создавать
нестандартные элементы пользовательского интерфейса в инспекторе для данных ваших собственных типов.
 Собственные редакторы, позволяющие полностью переопределить интерфейс
инспектора для определенных объектов.
Чтобы приступить к работе с примерами в этой главе, создадим новый проект.
1. Создайте новый проект с названием «Editor Extensions». Выберите его тип 3D
и сохраните в любой папке по своему выбору (рис. 16.1).

Рис. 16.1. Создание нового проекта

2. Когда Unity загрузится, создайте новую папку внутри папки Assets. Дайте новой
папке имя Editor. В ней мы будем хранить сценарии для наших расширений.
Обратите внимание: папка обязательно должна иметь имя Editor, именно в таком
написании, с первой заглавной буквой. Unity будет искать папку именно с таким
именем.
Фактически эта папка может находиться где угодно — совсем необязательно помещать ее в папку Assets, главное, чтобы она называлась Editor. Это очень удобно,
потому что в больших проектах может быть несколько папок Editor, что значительно упрощает работу с большим количеством сценариев.

Теперь вы готовы приступить к созданию сценариев своих собственных редакторов!

Создание своего мастера
Для начала создадим свой мастер. Мастер — это самый простой способ показать
окно, в котором можно получить ввод пользователя и на его основе создать что-

302    Глава 16. Расширения редактора
нибудь в сцене. Типичным примером может служить создание объекта, зависящего от параметров, введенных пользователем.
Мастеры и окна редактора, о которых рассказывается в разделе «Создание собственного окна редактора» далее в этой главе, концептуально похожи: оба отображают окно с элементами управления. Но они отличаются способом их использования: элементы управления мастера создаются и управляются редактором
Unity, тогда как управление элементами в окне редактора полностью возлагается
на вас. Мастеры прекрасно подходят в ситуациях, когда не требуется какой-то
специализированный пользовательский интерфейс, тогда как окна редактора
лучше подходят для случаев, где требуется управлять отображаемым содержимым.

Лучший способ понять, чем мастеры могут помочь в повседневной практике использования Unity, — создать один такой. Мы реализуем мастер, который создает
в сцене игровые объекты в форме тетраэдра — треугольной пирамидки, как показано на рис. 16.2.

Рис. 16.2. Тетраэдр, созданный мастером

Чтобы получить подобный объект, требуется вручную создать объект Mesh. Обычно такие объекты импортируются из файлов, например, из файла .blend, как было
показано в главе 9; однако их можно также создавать программно.

Создание своего мастера   303

С помощью Mesh можно создать объект, отображающий меш. Для этого сначала
нужно создать новый игровой объект GameObject, а затем подключить к нему два
компонента: MeshRenderer и MeshFilter. После этого объект будет готов для использования в сцене.
Эти шаги легко автоматизировать, а это значит, что данная процедура прекрасно
подходит для мастера.
1. Создайте в папке Editor новый сценарий на C# с именем Tetrahedron.cs и добавьте в него следующий код:
using UnityEditor;
public class Tetrahedron : ScriptableWizard {
}

Класс ScriptableWizard определяет базовое поведение мастера. Мы реализуем
несколько методов, переопределяющих это поведение, и получим интересный
опыт.
Сначала реализуем метод, отображающий мастер. Для этого требуется решить
две задачи: добавить новый пункт в меню Unity, который можно использовать
для вызова метода, а внутри этого метода обратиться к Unity, чтобы отобразить
мастер.
2. Добавьте следующий код в класс Tetrahedron:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

}

// Этому методу можно дать любое имя, главное, чтобы
// он был объявлен статическим и имел атрибут MenuItem
[MenuItem("GameObject/3D Object/Tetrahedron")]
static void ShowWizard() {
// Первый параметр - текст в заголовке окна, второй - надпись
// на кнопке создания
ScriptableWizard.DisplayWizard(
"Create Tetrahedron", "Create");

Когда статический метод снабжается атрибутом MenuItem, Unity добавляет
в меню приложения соответствующий пункт. В данном случае он создаст новый пункт Tetrahedron в меню GameObject3D Object; когда пользователь выберет этот пункт, Unity вызовет метод ShowWizard.
В действительности необязательно было давать методу имя ShowWizard. С таким
же успехом можно дать любое другое имя — Unity принимает во внимание только
атрибут MenuItem.

304    Глава 16. Расширения редактора
3. Вернитесь в Unity и откройте меню GameObject (Игровой объект). Выберите пункт 3D ObjectTetrahedron, и на экране появится пустое окно мастера
(рис.