15/01/2019

Адаптивные иконки в UE4 проекте на Андроид

В Android 8.0 Oreo (API 26) добавлена поддержка адаптивных иконок, которые могут отображать разные формы иконок для разных моделей устройств. Поскольку все больше устройств получают эти обновления, возникает все большая необходимость в дополнительных формах по-умолчанию. В итоге, уже существующие иконки могут некорректно отображаться. Чтобы убедиться в обратном, понадобится добавить в  проект адаптивные иконки. К счастью, это довольно простой процесс, не требующий изменений в SDK для работы.

Вот, что нужно знать:

Слева — обычная иконка, используемая в качестве адаптивной. Справа — новая иконка, модифицированная под функционал системы адаптивных иконок.

Типы иконок

На картинке ниже можно увидеть, как выглядит адаптивная иконка с разными формами по усмотрению пользователя.

Создание адаптивной иконки

Проще всего использовать для адаптивных иконок растровое изображение. Начните с нового PNG 108х108 снаружи и 72х72 внутри, содержащего картинку, чтобы убедиться, что она корректно отображается. Сохраняя файл, убедитесь, что он называется icon_bg.png.

Расположение адаптивной иконки

Как только создали иконку, поместите ее в папке проекта UE4: Build/Android/res/drawable.

Теперь новая иконка точно будет включена в проект для Android устройств.

Регистрация адаптивной иконки

Теперь необходимо создать XML-файл ресурсов иконки. Сначала создайте новую папку drawable-anydpi-v26 внутри Build/Android/res. Создайте новый XML-файл, назовите его icon.xml и добавьте к содержимому следующие строки:

<!--?xml version="1.0" encoding="utf-8"?-->
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@drawable/icon_bg">
</background></adaptive-icon>

Можно создать более сложную иконку, но это самый быстрый способ с наилучшей совместимостью. Обратитесь к руководству по адаптивным иконкам для больших деталей, используя накладываемые изображения и векторные формы.

Использование круглых иконок

Также можно осуществлять поддержку иконок Круглой формы (на некоторых новых Андроид устройствах это иконки по-умолчанию). Это требует дополнений к AndroidManifest.xml, что можно легко сделать при помощи Unreal Plugin Language, но учтите, что понадобится код проекта. Можно преобразовать любой Blueprint проект в код, просто добавив пустой класс.

Во-первых, создайте еще один 108х108 PNG под названием icon_round.png и скопируйте в папку UE4 проекта: Build/Android/res/drawable. Теперь понадобится указать другой XML-файл ресурсов иконки в AndroidManifest.xml. В папке Build/Android/res/drawable-any-dpi-v26 создайте новый XML-файл под названием icon_round.xml и добавьте следующее:

<!--?xml version="1.0" encoding="utf-8"?-->
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@drawable/icon_round_bg">
</background></adaptive-icon>

Следующий UPL-файл должен называться AddRoundIcon_UPL.xml и находиться в исходной директории проекта, где расположен файл Build.cs. Папка обычно называется по имени проекта, так что если это — Match3.uproject, ищите в Source/Match3.

Вот содержимое для этого файла:

<!--?xml version="1.0" encoding="utf-8"?-->
<root xmlns:android="http://schemas.android.com/apk/res/android">
	<!-- init section is always evaluated once per architecture -->
	<init>
	</init>

	<androidmanifestupdates>
		<!-- add roundIcon attribute to application -->
		<addattribute name="”android:roundIcon”" tag="”application”" value="”@drawable/icon_round”/">
	</addattribute></androidmanifestupdates>
</root>

Наконец, требуется зарегистрировать UPL файл, добавляя к Buil.cs проекта (Source/Match3/Match3.Build.cs как показано выше). Добавьте к файлу:

if (Target.Platform == UnrealTargetPlatform.Android)
{
	// Add UPL to add configrules.txt to our APK
	string PluginPath = Utils.MakePathRelativeTo(ModuleDirectory, Target.RelativeEnginePath);
	AdditionalPropertiesForReceipt.Add("AndroidPlugin", System.IO.Path.Combine(PluginPath, "AddRoundIcon_UPL.xml"));
}

По завершении, можно упаковывать билд UE4 проекта для Android. Иконки можно будет увидеть, когда проект появится на устройстве.

Оригинальный материал в блоге unrealengine.com

Recent Posts

Как в НИУ ВШЭ воспитывают новых Кодзим

11/07/2019
Реально ли попасть в геймдев, отучившись 4 года и получив диплом? Чему предстоит обучаться? Какие подводные камни? Что говорят студенты и преподаватели?

От юриста до разработчика игр при финансовой поддержке Unreal Engine

08/07/2019
Ник Пирс поделился замечательной историей о том, как сменить скучную профессию и стать разработчиком игр. 

Создание ИИ сверхскоростных автомобилей с помощью Unreal Engine

04/07/2019
Ведущий программист Dark Future: Blood Red States рассказывает об изящном решении для создания ИИ правдоподобных противников.