Jetpack Window Manager для Unity
Jetpack Window Manager доступен в виде пакета, который можно включить в проект Unity. Настройте систему сборки gradle и реализуйте пользовательский базовый класс действий, а затем добавьте вспомогательный класс C#, который вызывает собственный API Java.
API свертываемых и двухэкранных экранов
Код WindowManagerHelper.cs предоставляет следующие методы, предоставляющие сведения, предоставляемые диспетчером Окон Jetpack:
WindowManagerHelper.GetCurrentWindowMetricsBounds
. Границы (левая, верхняя, ширина, высота) всей области, занимаемой приложением.WindowManagerHelper.IsSeparating
. Указывает, отделяет ли функция свертывания области экрана. Это всегдаTRUE
находится в Surface Duo. Это наTRUE
некоторых других складных устройствах только в том случае, если они сложены, ноFALSE
когда они плоские.WindowManagerHelper.Orientation
. Ориентация функции свертывания, если она имеется.HORIZONTAL
илиVERTICAL
.WindowManagerHelper.OcclusionType
. Скрывается ли компонент свертывания содержимого.FULL
илиNONE
.WindowManagerHelper.State
. Состояние свертывания.FLAT
илиHALF_OPEN
.WindowManagerHelper.Bounds
. Границы (левая, верхняя, ширина, высота) функции свертки, если она имеется.
Ниже приведен снимок экрана примера демонстрации API с информацией об устройстве из пакета Jetpack Window Manager:
Реализация диспетчера окон Jetpack в Unity
Выполните следующие действия, чтобы настроить конфигурацию сборки приложения Android и реализовать Jetpack Window Manager. Вы также можете просмотреть код в этом примере.
В Unity перейдите в раздел "Изменить>Project Параметры...>Игрок>(Android)>Публикация Параметры и выберите следующие параметры сборки:
Этот шаг помещает новые элементы в ресурсы и подключаемые модули проекта или Android, которые затем настраиваются для поддержки пакета Window Manager.
Обновите файл mainTemplate.gradle , чтобы включить Jetpack Window Manager в проект, добавив следующие зависимости:
dependencies { implementation "androidx.window:window:1.0.0" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61" implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.core:core-ktx:1.3.2' }
Обновите файл gradleTemplate.properties , добавив следующую строку:
android.useAndroidX = true
Приложению требуется пользовательское действие для реализации функциональных возможностей диспетчера окон и предоставления сведений для C#. Создайте файл FoldablePlayerActivity.java в той же папке Assets/Plugins/Android, а затем обновите AndroidManifest.xml для ссылки на новый класс:
<activity android:name="com.microsoft.device.dualscreen.unity.FoldablePlayerActivity"
Добавьте полный класс из FoldablePlayerActivity.java в GitHub.
Скопируйте вспомогательный класс WindowManagerHelper.cs из GitHub в проект. Папка — Assets/SurfaceDuo/Plugins в примере.
Теперь ресурсы, подключаемые модули и Android содержат эти элементы, настроенные на приведенных выше шагах.
Файл WindowManagerHelper.cs находится в папке Assets/SurfaceDuo/Plugins в примере, но этот вспомогательный класс может находиться в любом месте в коде игры.
После реализации изменений макета на основе наличия функции свертывания можно протестировать игру на Surface Duo и других складных устройствах, поддерживающих Jetpack Window Manager.
Следующие шаги
Просмотрите эти примеры.