Поделиться через


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:

Screenshot shows Jetpack Window Manager properties showing in the Unity sample app.

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

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

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

    Screenshot shows the Publishing Settings Build options list.

    Этот шаг помещает новые элементы в ресурсы и подключаемые модули проекта или Android, которые затем настраиваются для поддержки пакета Window Manager.

  2. Обновите файл 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'
    }
    
  3. Обновите файл gradleTemplate.properties , добавив следующую строку:

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

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

  6. Скопируйте вспомогательный класс WindowManagerHelper.cs из GitHub в проект. Папка — Assets/SurfaceDuo/Plugins в примере.

Теперь ресурсы, подключаемые модули и Android содержат эти элементы, настроенные на приведенных выше шагах.

Screenshot shows Customized Android project configuration files in Unity.

Файл WindowManagerHelper.cs находится в папке Assets/SurfaceDuo/Plugins в примере, но этот вспомогательный класс может находиться в любом месте в коде игры.

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

Следующие шаги

Просмотрите эти примеры.