Unity から Surface Duo のデュアル画面情報にアクセスする

注意

新しい Unity プロジェクトでは、折りたたみ可能なデバイス機能に Jetpack Window Manager を使用する必要があります。 Surface Duo、Surface Duo 2、および他の製造元のデバイスで動作します。

以下で説明する Microsoft デュアルスクリーン SDK は、Microsoft Surface Duo デバイスでのみ動作します。

Microsoft デュアルスクリーン SDK は、Unity プロジェクトに含めることができるパッケージとして使用できます。 gradle ビルド システムをカスタマイズし、ネイティブ Java API を呼び出す C# ヘルパー クラスを追加します。

Surface Duo 用 Microsoft デュアルスクリーン SDK

SurfaceDuoScreenHelper.cs コードは、Microsoft SDK for Surface Duo によって提供される情報を公開するメソッドを提供します。

  • DeviceHelper.IsDualScreenDevice. 他のデュアルスクリーン API にアクセスする前に、このメソッドを呼び出します。
  • ScreenHelper.GetCurrentRotation. 現在の回転値を取得します。 値 0 は 0 度、1 は 90 度、2 は 180 度、3 は 270 度を意味します。
  • ScreenHelper.IsDualMode. アプリが両方の画面にまたがるかどうか。 ビューポートは、画面間のギャップによって部分的に隠されます。
  • ScreenHelper.GetScreenRectangles. 2 つの画面のサイズをピクセル単位で返します。
  • ScreenHelper.GetHinge. ビューポートの隠れた領域の寸法をピクセル単位で返します。 アプリがスパンされていない場合は、0 次元が返されます。 1 つの画面にしか表示されないので、何も隠されません。

Unity ScreenHelper サンプルで、これらのメソッドのサンプル コードを表示します。 このサンプルでは、次のスクリーンショットに示すように、デバイス情報が表示されます。

Screenshot shows a Unity game sample screen data.

Unity で Microsoft デュアルスクリーン SDK を実装する

この統合の例は、Unity サンプル リポジトリの 2019-LTS-archive ブランチ で入手できます。

  1. mainTemplate.gradle を更新して、Surface Duo Android SDK をダウンロードします。

    maven {
        url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
    }
    

    および

    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61"
        implementation "com.microsoft.device:dualscreen-layout:0.9.0"
    }
    
  2. このスクリプト SurfaceDuoScreenHelper.cs をゲーム プロジェクトにコピーします。

  3. このページに記載されているデュアルスクリーン メソッドを使用して、デュアルスクリーン デバイスのゲームを強化します。

次の手順

Surface Duo の Unity ゲーム サンプルを確認します