适用于 Unity 的 Jetpack 窗口管理器

Jetpack 窗口管理器可用作可包含在 Unity 项目中的包。 自定义 gradle 生成系统并实现自定义基活动类,然后添加调用本机 Java API 的 C# 帮助程序类。

可折叠和双屏 API

WindowManagerHelper.cs 代码提供了以下方法,这些方法公开 Jetpack 窗口管理器提供的信息:

  • WindowManagerHelper.GetCurrentWindowMetricsBounds. 应用程序占用的整个区域的边界 (左、顶部、宽度、高度) 。
  • WindowManagerHelper.IsSeparating. 折叠功能是否分隔屏幕区域。 这始终 TRUE 在 Surface Duo 上。 TRUE它位于一些其他可折叠设备上,仅当它们被折叠,但FALSE当它们平展时。
  • WindowManagerHelper.Orientation. 折叠功能的方向(如果有)。 HORIZONTALVERTICAL
  • WindowManagerHelper.OcclusionType. 折叠功能是否掩盖了内容。 FULLNONE
  • WindowManagerHelper.State. 折叠的状态。 FLATHALF_OPEN
  • WindowManagerHelper.Bounds. 如果存在折叠功能,边界 (左、上、宽度、高度) 。

下面是 API 演示示例 的屏幕截图,其中显示了 Jetpack 窗口管理器包中的设备信息:

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

在 Unity 中实现 Jetpack 窗口管理器

按照以下步骤自定义Android应用生成配置并实现 Jetpack 窗口管理器。 还可以查看 此示例中的代码。

  1. 在 Unity 中,转到“编辑>Project 设置...>球员>> (Android) 发布设置并选择以下生成选项:

    Screenshot shows the Publishing Settings Build options list.

    此步骤将新项放在项目的 Assets/Plugins/Android中,然后自定义这些项以支持 Window Manager 包。

  2. 通过添加以下依赖项,更新 mainTemplate.gradle 以在项目中包括 Jetpack 窗口管理器:

    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# 公开信息。 在同一文件夹 Assets/Plugins/Android 中创建文件 FoldablePlayerActivity.java,然后更新AndroidManifest.xml以引用新类:

    <activity android:name="com.microsoft.device.dualscreen.unity.FoldablePlayerActivity"
    
  5. 在 GitHub 上从 FoldablePlayerActivity.java 添加完整的类。

  6. WindowManagerHelper.cs 帮助程序类从GitHub复制到项目中。 该文件夹是示例中 的 Assets/SurfaceDuo/Plugins

Assets/Plugins/Android现在包含上述步骤中自定义的这些项目:

Screenshot shows Customized Android project configuration files in Unity.

WindowManagerHelper.cs 文件位于示例中的 Assets/SurfaceDuo/Plugins 文件夹中,但此帮助程序类可以位于游戏代码中的任何位置。

根据折叠功能的状态实现布局更改后,可以在 Surface Duo 和其他支持 Jetpack 窗口管理器的可折叠设备上测试游戏。

后续步骤

查看这些 示例