Jetpack Window Manager для Unity (бета-версия)

Важно!

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

Диспетчер окон Jetpack доступен в виде пакета, который может быть включен в проект Unity путем настройки системы сборки gradle и реализации пользовательского класса базового действия, а также добавления вспомогательного класса C#, который вызывает собственный API Java.

API свертываемые и Сдвоенный экран

Код виндовманажерхелпер. CS предоставляет следующие методы, которые предоставляют сведения, предоставляемые диспетчером окон Jetpack:

  • Виндовманажерхелпер. жеткуррентвиндовметриксбаундс — границы (слева, сверху, ширина, высота) всей области, занимаемой приложением.
  • Виндовманажерхелпер.-разделители — является ли функция свертывания разделять области экрана. Это всегда верно для Surface Duo, а на некоторых других устройствах свертываемые имеет значение TRUE, только если они сведены, но равны FALSE, если они плоские.
  • Виндовманажерхелпер. Orientation — ориентация функции свертывания, если она имеется (горизонтальная или вертикальная).
  • Виндовманажерхелпер. окклусионтипе — указывает, скрывает ли функция свертывания содержимое (полное или нет).
  • Виндовманажерхелпер. State — состояние сгиба (плоский или HALF_OPEN).
  • Виндовманажерхелпер. Bounds — границы (слева, сверху, ширина, высота) функции свертывания, если таковая имеется.

На снимке экрана примера демонстрации API показаны сведения об устройстве из пакета диспетчера окон:

Свойства диспетчера окон, отображаемые в примере приложения Unity

Реализация диспетчера окон Jetpack в Unity

Выполните следующие действия, чтобы настроить конфигурацию сборки приложения Android и реализовать диспетчер окон Jetpack. Вы также можете ознакомиться с кодом в этом примере.

  1. в Unity перейдите в раздел Edit Project Параметры... >>> Параметры публикации проигрывателя (Android) и проверьте следующие параметры > :

    публикация списка параметров сборки Параметры

    В нем будут размещаться новые элементы в ресурсах, подключаемых модулях и Android, которые затем настраиваются для поддержки пакета диспетчера окон.

  2. Обновите mainTemplate. gradle , чтобы включить диспетчер окон Jetpack в проект, добавив следующее:

    dependencies {
        implementation "androidx.window:window:1.0.0-beta02"
        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'
    }
    
  3. Обновите файл градлетемплате. Properties , добавив следующую строку:

    android.useAndroidX = true    
    
  4. Приложению требуется пользовательское действие для реализации функции диспетчера окон и предоставления информации в C#. Для этого создайте файл фолдаблеплайерактивити. Java в том же каталоге Assets/plugins/Android, а затем обновите AndroidManifest.xml для ссылки на новый класс:

    <activity android:name="com.microsoft.device.dualscreen.unity.FoldablePlayerActivity"
    
  5. Добавьте в GitHub полный класс из фолдаблеплайерактивити. Java .

  6. скопируйте вспомогательный класс виндовманажерхелпер. cs из GitHub в папку проекта (assets/сурфацедуо/plugins в примере).

Активы/plugins/Android теперь будут содержать эти элементы, настроенные в описанных выше действиях.

Настраиваемые файлы конфигурации проектов Android в Unity

Виндовманажерхелпер. CS находится в папке Assets/сурфацедуо/plugins в примере, но этот вспомогательный класс может располагаться в любом месте кода игры.

После реализации изменений макета в зависимости от наличия функции свертывания можно проверить игру на Surface Duo и другие устройства свертываемые, поддерживающие диспетчер окон Jetpack.