從 Unity 存取 Surface Duo 上的雙螢幕資訊

注意

新的 Unity 專案應該使用 Jetpack 視窗管理員 進行可折迭的裝置功能。 它適用于來自其他製造商的 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. 以圖元傳回兩個螢幕的維度。
  • ScreenHelper.GetHinge. 以圖元傳回檢視區遮蔽區域的維度。 如果應用程式未跨越,這會傳回零維度。 因為它只會顯示在單一畫面上,所以不會遮蔽任何內容。

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 遊戲範例