Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity_в_действии_Джозеф_Хокинг_Рус.pdf
Скачиваний:
83
Добавлен:
21.06.2022
Размер:
26.33 Mб
Скачать

300      Глава 12. Развертывание игр на устройствах игроков

С а ,

 

Unity

С а„ • а …

а а .

В а •,

( • ‡а

• •

„ а 11)

Щ а • •

О а а а

, ‡

а

• а • а

 

ВНИМАНИЕ:

С

•„ • а

•‹ • а

а „

 

Рис. 12.1. Окно Build Settings

местоположения файла начинается процесс построения, после чего Unity создает исполняемый файл для активной в данный момент платформы; давайте рассмотрим этот процесс для наиболее популярных платформ: настольных компьютеров, Интернета и мобильных устройств.

12.1. Создание приложений для настольных компьютеров: Windows, Mac и Linux

Если вы только приступаете к знакомству с вопросом создания игр в Unity, проще всего начать с развертывания игры на настольных компьютерах под управлением Windows PC, Mac OS X или Linux. Unity работает на настольных компьютерах, соответственно, приложение будет генерироваться для той машины, которой вы уже пользуетесь.

ПРИМЕЧАНИЕ  Для упражнений этой главы можно открыть любой проект по вашему вкусу. Я уверяю, что все будет работать; более того, рекомендую для каждого следующего раздела открывать новый проект, чтобы убедиться в способности Unity развертывать любой проект на любой платформе!

12.1.1. Построение приложения

Первым делом выберите в меню File команду Build Settings, чтобы открыть одноименное окно. По умолчанию выбран вариант PC, Mac, and Linux, но если вас интересует другой вариант, укажите его в списке и щелкните на кнопке Switch Platform.

С правой стороны находится раскрывающийся список Target Platform. Он позволяет выбрать между платформами Windows PC, Mac OS X и Linux. В списке слева эти варианты рассматривались как один, но на самом деле это разные платформы, поэтому выберите нужную.

12.1. Создание приложений для настольных компьютеров: Windows, Mac и Linux      301

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

СОБСТВЕННЫЙ СЦЕНАРИЙ ПОСТ-СБОРКИ

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

Первым делом создайте новую папку на вкладке Project и присвойте ей имя Editor; именно здесь должны находиться все сценарии, влияющие на редактор Unity (это касается и процесса сборки). Создайте в этой папке сценарий с именем TestPostBuild и введите в него следующий код:

using UnityEngine; using UnityEditor;

using UnityEditor.Callbacks;

public static class TestPostBuild {

[PostProcessBuild]

public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) {

Debug.Log("build location: " + pathToBuiltProject);

}

}

Директива [PostProcessBuild] заставляет сценарий запускать расположенную непосредственно за ней функцию. Эта функция получит местоположение построенного приложения; после этого вы сможете использовать данный параметр в различных командах для работы с файловой системой из языка C#. В настоящее время путь кфайлу выводится на консоль, что позволяет удостовериться в работоспособности сценария.

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

12.1.2. Настройки проигрывателя: имя и значок приложения

Вернемся в окно Build Settings, но на этот раз щелкнем не на кнопке Build, а на кнопке Player Settings. На панели Inspector появится список настроек, показанный на рис. 12.2; они контролируют различные аспекты готового приложения.

Так как настроек в данном случае много, лучше почитать о них в руководстве пользователя — вот адрес страницы: http://docs.unity3d.com/ru/current/Manual/class-PlayerSettings. html.

Смысл трех верхних параметров очевиден: Company Name (имя компании), Product Name (имя продукта) и Default Icon (значок, предлагаемый по умолчанию). Укажите

302      Глава 12. Развертывание игр на устройствах игроков

значение первых двух. В поле Company Name — название студии-разработчика, а в поле Product Name — название игры. Затем задайте значок игры, перетащив нужное изображение с вкладки Project (при необходимости сначала импортируйте его в проект); когда приложение будет построено, это изображение появится как его значок.

 

Ч а а а

 

а а ,

 

а• а

 

а Project

И а а-а а а а

 

. О , -,

В а а

, -,

а •а•

а

а а … !

 

Н • а ;

 

а а•

 

а • а‰ Unity

Рис. 12.2. Настройки проигрывателя на панели Inspector

НАСТРОЙКИ КАЧЕСТВА

На генерируемое приложение также влияют настройки проекта, доступ ккоторым осуществляется через меню Edit. Вчастности, именно тут настраивается визуальное качество готового приложения. Выберите в меню Edit команду Project Settings, а затем в дополнительном меню — команду Quality.

На панели Inspector появятся элементы управления качеством, наиболее важными из которых являются флажки в расположенной сверху группе. В верхнем ряду находятся значки возможных платформ, а сбоку указаны варианты настроек качества. Установленные флажки показывают доступные для данной платформы настройки, а выделенные зеленым — текущие настройки. В большинстве случаев по умолчанию применяется вариант Fastest (соответствующий минимальному качеству), но если все выглядит плохо, можно выбрать вариант Fantastic; щелчок на стрелке в нижнем ряду под нужным значком платформы открывает меню.

В • а• а• а• а - а а а а• а

Щ а

Default,

а а а. В •

• • а а

Сетка настроек качества на панели Inspector

12.1. Создание приложений для настольных компьютеров: Windows, Mac и Linux      303

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

Значок и имя приложения придают результатам вашего труда ощущение законченности. Другим вариантом настройки поведения приложений является зависящий от платформы код.

12.1.3. Компиляция в зависимости от платформы

По умолчанию весь написанный вами код запускается на всех платформах одним и тем же способом. Но Unity предоставляет нам ряд директив компилятора (известных как определения платформ), которые заставляют код работать исключительно на указанной платформе. Полный список определений платформ вы найдете на странице http://docs.unity3d.com/ru/current/Manual/PlatformDependentCompilation.html.

Директивы существуют для всех поддерживаемых Unity платформ, соответственно, на каждой из них вы можете запускать свою версию кода. Обычно большую часть кода помещать внутрь директив не требуется, но отдельные фрагменты иногда имеет смысл запускать с привязкой к конкретной платформе. Некоторые варианты сборки существуют исключительно на одной платформе (например, в главе 11 упоминалось, что доступ к файловой системе в веб-проигрывателях отсутствует), поэтому требуются директивы компилятора, позволяющие обойти это ограничение. Следующий листинг демонстрирует пример написания такого кода.

Листинг 12.1. Сценарий PlatformTest с примером кода, привязанного к платформе

using UnityEngine;

using System.Collections;

public class PlatformTest : MonoBehaviour { void OnGUI() {

#if UNITY_EDITOR ¬ Этот раздел запускается только в редакторе.

GUI.Label(new Rect(10, 10, 200, 20), "Running in Editor");

#elif UNITY_STANDALONE ¬ Только в приложениях для рабочего стола/автономных приложениях.

GUI.Label(new Rect(10, 10, 200, 20), "Running on Desktop"); #else

GUI.Label(new Rect(10, 10, 200, 20), "Running on other platform"); #endif

}

}

Создайте сценарий PlatformTest и скопируйте в него код этого листинга. Свяжите его с произвольным объектом сцены (для тестирования подойдет любой объект), и в верхней левой части экрана появится маленькое сообщение. При воспроизведении игры в редакторе Unity это будет сообщение Running in the Editor (выполняется в редакторе), но если вы сгенерируете приложение и запустите его, появится уже другой текст: Running on Desktop (выполняется на настольном компьютере). В каждом случае запускается свой вариант кода!