Jetpack Window Manager for Unity

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 Window Manager 구현

다음 단계에 따라 Android 앱 빌드 구성을 사용자 지정하고 Jetpack Window Manager를 구현합니다. 이 샘플의 코드를 검토할 수도 있습니다.

  1. Unity에서 편집>으로 이동합니다Project 설정...>플레이어>(Android)>게시 설정 다음 빌드 옵션을 선택합니다.

    Screenshot shows the Publishing Settings Build options list.

    이 단계에서는 프로젝트의 자산/플러그 인/Android 새 항목을 배치한 다음 Window Manager 패키지를 지원하도록 사용자 지정합니다.

  2. 다음 종속성을 추가하여 프로젝트에 Jetpack Window Manager를 포함하도록 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. GitHub WindowManagerHelper.cs 도우미 클래스를 프로젝트로 복사합니다. 이 폴더는 샘플 의 Assets/SurfaceDuo/Plugins 입니다.

자산/플러그 인/Android 이제 위의 단계에서 사용자 지정된 다음 항목이 포함됩니다.

Screenshot shows Customized Android project configuration files in Unity.

WindowManagerHelper.cs 파일은 샘플의 Assets/SurfaceDuo/Plugins 폴더에 있지만 이 도우미 클래스는 게임 코드의 어디에나 있을 수 있습니다.

접기 기능의 존재에 따라 레이아웃 변경을 구현한 후에는 Surface Duo 및 Jetpack Window Manager를 지원하는 다른 접이식 장치에서 게임을 테스트할 수 있습니다.

다음 단계

이러한 샘플을 검토합니다.