Unity 向け Jetpack Window Manager

Jetpack Window Manager は、Unity プロジェクトに含めることができるパッケージとして使用できます。 gradle ビルド システムをカスタマイズし、カスタム基本アクティビティ クラスを実装してから、ネイティブ Java API を呼び出す C# ヘルパー クラスを追加します。

折りたたみ式およびデュアルスクリーン API

WindowManagerHelper.cs コードは、Jetpack Window Manager によって提供される情報を公開する次のメソッドを提供します。

  • WindowManagerHelper.GetCurrentWindowMetricsBounds. アプリケーションが占有する領域全体の境界 (左、上、幅、高さ)。
  • WindowManagerHelper.IsSeparating. 折りたたみ機能が画面領域を分離しているかどうか。 これは常 TRUE に Surface Duo にあります。 TRUE他の折りたたみ可能なデバイスでは、折りたたまれたときにだけ、FALSEフラットな場合にのみ使用できます。
  • WindowManagerHelper.Orientation. 折りたたみ機能の向き (存在する場合)。 HORIZONTAL または VERTICAL
  • WindowManagerHelper.OcclusionType. 折りたたみ機能がコンテンツを隠すかどうか。 FULL または NONE
  • WindowManagerHelper.State. フォールドの状態。 FLAT または HALF_OPEN
  • WindowManagerHelper.Bounds. 折りたたみフィーチャーの境界 (左、上、幅、高さ) (存在する場合)。

Jetpack Window Manager パッケージのデバイス情報を示す API デモ サンプル のスクリーンショットを次に示します。

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. 次の依存関係を追加して、プロジェクトに Jetpack ウィンドウ マネージャーを含むように mainTemplate.gradle を更新します。

    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/AndroidFoldablePlayerActivity.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 をサポートする他の折りたたみ可能なデバイスでゲームをテストできます。

次の手順

これらの サンプルを確認します。