適用于 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 Window Manager 套件中的裝置資訊:

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

在 Unity 中實作 Jetpack 視窗管理員

請遵循下列步驟來自訂您的Android應用程式組建組態,並實作 Jetpack Window Manager。 您也可以檢閱 此範例中的程式碼。

  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中建立File 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 Window Manager 的可折迭裝置上測試遊戲。

下一步

檢閱這些 範例