На старте создания игры важно сразу определиться с её основными настройками, которые связаны с разрешениями экранов и размерами окон, в которых будет запускаться игра.
Возьмём, например, мобильные игры, в которые можно играть на самых разных смартфонах и планшетах. У этих устройств разные размеры и разрешения экранов.
Разработчик должен позаботиться о том, чтобы на любом устройстве игрок хорошо видел все игровые объекты, чтобы работали все кнопки интерфейса и пр. А художник заранее знал все эти параметры и рисовал арт для игры в нужных размерах и разрешениях.
Что необходимо сделать в Unity, чтобы на разных экранах игра выглядела одинаково?
Для этого перейти в пункт меню File -> Build Settings…
По умолчанию в редакторе Unity установлена платформа PC, Mac & Linux Standalone.
Если делаем мобильную игру, то сразу после создания проекта необходимо выбрать платформу Android (для смартфонов и планшетов, работающих под Android) или iOS (для айфонов и айпадов).
После выбора платфомы обязательно нажать на кнопку Switch Platform в правом нижнем углу!
Придётся немного подождать, пока среда разработки Unity не сконвертрует все необходимые файлы в нужный формат.
ВАЖНО! Несмотря на то, что описанную процедуру можно выполнить в любое время, рекомендуется выбор платформы делать сразу, на старте работы с проектом, чтобы не пришлось потом многое переделывать.
2. Задать разрешение экрана
Чтобы в процессе разработки тестировать свою игру, не собирая каждый раз новый билд, в окне Game редактора Unity выбираем целевое разрешение (например, Full HD (1920×1080)) или соотношение сторон (например, 16:9 Aspect). Например, для платформы PC, Mac & Linux Standalone может быть задан следующий набор вариантов:
Здесь перечислены самые популярные разрешения и соотношения сторон экранов компьютеров. Если в этом перечне нет необходимых значений, их можно ввести вручную, нажав на кнопку со знаком + в кружочке, которая расположена в самом низу:
В этом выпадающем окне есть настраиваемый параметр Type с выбором одного из двух значений:
Fixed Resolution – для задания фиксированных значений ширины (Width) и высоты (Height) окна игры;
Aspect Ratio – для задания соотношения сторон.
Для мобильных игр в Unity также предусмотрены самые популярные разрешения и соотношения сторон (этот набор значений постоянно обновляется, так как появляются всё новые и новые мобильные устройства):
Здесь вариантов значительно больше, т.к. а) на рынке представлено множество различных мобильных устройств с разными характеристиками; б) помимо собственно разрешения у экранов смартфонов и планшетов есть ещё характеристика ориентация – горизонтальная (Landscape) или вертикальная (Portrait).
За основу для разработки можно взять, например, одно из максимально возможных разрешений 2560х1440.
3. Настроить Canvas Scaler
У любого приложения или игры есть интерфейс, с помощью которого пользователь может управлять процессом, выполнять различные действия, делать настройки и пр. В играх интерфейс представляет собой набор различных кнопок, информационных блоков (например, количество заработанных игроком очков, уровень здоровья (HP – Health Progress) персонажа и т.д.).
Основная часть интерфейса игры, созданной в Unity, это объекты Button, Text и др. Все они размещаются как дочерние объекты для объекта Canvas.
Чтобы при запуске игры на разных устройствах с разным разрешением кнопки не «разбегались» и не исчезали, необходимо в панели Inspector настроить компонент Canvas Scaler для объекта Canvas:
Для свойства UI Scale Mode необходимо задать значение Scale With Screen Size:
А затем ввести необходимые значения X и Y для Reference Resolution:
Это те же числа ширины и высоты (разрешения) предполагаемого экрана устройства. Они отображаются в окне Game после задания разрешения экрана на шаге 2:
После этой настройки, даже если игра будет запускаться на устройствах с другим разрешением, движок Unity будет стараться максимально перестроить системы координат и размеры элементов интерфейса, чтобы они выглядели для всех пользователей примерно одинаково.
Примечание: за более точное размещение кнопок, текстов и пр. интерфейса внутри Canvas отвечают также инструменты привязки компонента Rect Transform для каждого UI-объекта:
Как с ними работать, рассмотрим в отдельном уроке.
4. Настроить ориентацию приложения для сборки
Для мобильных игр важно также заранее решить, в какой ориентации экрана смартфона или планшета будет происходить игровой процесс (геймплей): вертикально или горизонтально, либо будут поддерживаться обе ориентации. В последнем случае придётся потрудиться как над локациями, так и интерфейсом, чтобы при повороте устройства все игровые объекты распределялись на экране адекватным образом. Поэтому начинающим разработчикам рекомендуется выбрать один вариант.
При сборке проекта в файл для размещения в игровом сторе (например, Гугл Маркет) необходимо проставить соответствующие настройки.
Сначала проходим в пункт меню File -> Build Settings…
Затем в окне Build Settings нажимаем на кнопку Player Settings… (в левом нижнем углу):
Затем в окне Project Settings, в разделе Player необходимо задать необходимые свойства Resolution and Presentation -> Allowed Orientations for Auto Rotation (допустимые ориентации для автоповорота): Portrait, Portrait Upside Down (для вертикальной ориентации) либо Landscape Right, Landscape Left (для горизонтальной), проставив и убрав соответствующие галочки:
5. Настроить спрайты (опционально, для 2D-игр и UI)
Данный пункт не на столько критичен, в сравнении с рассмотренными выше. Однако выбор основного разрешения и ориентации для игры помогает художнику создавать игровой арт и элементы интерфейса в необходимых размерах и разрешениях.
На практике же (например, при разработке прототипов) могут использовать изображения разного размера и разрешения. Начинающие разработчики допускают серьёзную ошибку, когда изменяют свойство Scale компонента Transform для таких объектов на сцене. Такие преобразования создадут проблемы, когда наступит время заменить временные изображения на те, которые были созданы художником по всем правилам. Снова придется изменять Scale, координаты и прочие параметры, фактически работая над проектом заново и многое переделывая.
Чтобы избежать таких проблем, необходимо работать с исходными спрайтами и их параметрами (свойствами) из папки Assets через панель Inspector.
Рассмотрим пример. Пусть у нас имеется некоторый спрайт для 2D-игры. На скриншоте слева на темно-сером фоне этот спрайт размещён на сцене. В нижнем левом углу скриншота мы видим его из папки Assets в окне Project. А внизу и правее – предпросмотр изображения (графического файла), на основе которого создан этот спрайт. Под изображением можно прочесть реальный размер и разрешение картинки. В данном случае это изображение 31х110 пикселей размером 13,3 Килобайт.
Спрайт очень маленький. И если нам необходимо сделать его визуально большего размера на сцене, в свойствах Pixels Per Unit (количество пикселей на юнит) необходимо ввести меньшее число. Например, введём ширину картинки в пикселях 31 и нажмём на кнопку Apply в нижнем правом углу под всеми свойствами объекта.
После этого объект на сцене становится значительно большего размера:
Примечание: unit (юнит) — это виртуальная единица измерения, используемая в редакторе Unity. На скриншотах видна сетка, каждый квадрат которой имеет размер 1×1 unit. Это условная величина, которую обычно ассоциируют с 1 метром в реальном мире. Это позволяет ориентироваться в масштабах размещаемых на сцене локаций и относительных размерах объектов создаваемого виртуального мира игры.
Визуально мы видим размытие, которое произошло при увеличении объекта. Во многих играх это нормальное явление. Но если хочется получить более чёткую «пиксельную» графику, можно задать свойство Filter Mode в Point (no filter):
Сделаем сейчас значение Pixels Per Unit больше, например, 200:
В результате визуально на сцене спрайт стал значительно меньшего размера с более чёткой отрисовкой.
И всё это без изменений значений Scale у объекта на сцене! Они остались равны 1, 1, 1.
Теперь при замене изображений спрайтов риска и переделок будет значительно меньше!
Рекомендуем поэкспериментировать и с другими настройками свойств спрайтов.