适用于 Unity 的 Jetpack 窗口管理器
Jetpack 窗口管理器可用作可包含在 Unity 项目中的包。 自定义 gradle 生成系统并实现自定义基活动类,然后添加调用本机 Java API 的 C# 帮助程序类。
可折叠和双屏 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 窗口管理器包中的设备信息:
在 Unity 中实现 Jetpack 窗口管理器
按照以下步骤自定义Android应用生成配置并实现 Jetpack 窗口管理器。 还可以查看 此示例中的代码。
在 Unity 中,转到“编辑>Project 设置...>球员>> (Android) 发布设置并选择以下生成选项:
此步骤将新项放在项目的 Assets/Plugins/Android中,然后自定义这些项以支持 Window Manager 包。
通过添加以下依赖项,更新 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' }
通过添加以下行更新 gradleTemplate.properties 文件:
android.useAndroidX = true
应用需要自定义活动来实现窗口管理器功能,并向 C# 公开信息。 在同一文件夹 Assets/Plugins/Android 中创建文件 FoldablePlayerActivity.java,然后更新AndroidManifest.xml以引用新类:
<activity android:name="com.microsoft.device.dualscreen.unity.FoldablePlayerActivity"
在 GitHub 上从 FoldablePlayerActivity.java 添加完整的类。
将 WindowManagerHelper.cs 帮助程序类从GitHub复制到项目中。 该文件夹是示例中 的 Assets/SurfaceDuo/Plugins 。
Assets/Plugins/Android现在包含上述步骤中自定义的这些项目:
WindowManagerHelper.cs 文件位于示例中的 Assets/SurfaceDuo/Plugins 文件夹中,但此帮助程序类可以位于游戏代码中的任何位置。
根据折叠功能的状态实现布局更改后,可以在 Surface Duo 和其他支持 Jetpack 窗口管理器的可折叠设备上测试游戏。
后续步骤
查看这些 示例。