Gerenciador de Janelas do Jetpack para Unity

O Gerenciador de Janelas do Jetpack está disponível como um pacote que pode ser incluído em seu projeto do Unity. Personalize o sistema de build de gradle e implemente uma classe de atividade base personalizada e adicione uma classe auxiliar C# que chama a API Java nativa.

API dobrável e de tela dupla

O código WindowManagerHelper.cs fornece estes métodos que expõem informações fornecidas pelo Gerenciador de Janelas do Jetpack:

  • WindowManagerHelper.GetCurrentWindowMetricsBounds. Os limites (esquerda, superior, largura, altura) de toda a área que o aplicativo ocupa.
  • WindowManagerHelper.IsSeparating. Se o recurso dobrável está separando áreas de tela. Isso está sempre TRUE no Surface Duo. TRUE Está em alguns outros dispositivos dobráveis somente quando eles são dobrados, mas FALSE quando são simples.
  • WindowManagerHelper.Orientation. A orientação do recurso de dobra, se houver um. HORIZONTAL ou VERTICAL.
  • WindowManagerHelper.OcclusionType. Se o recurso dobrável obscurece o conteúdo. FULL ou NONE.
  • WindowManagerHelper.State. O estado da dobra. FLAT ou HALF_OPEN.
  • WindowManagerHelper.Bounds. Os limites (esquerda, superior, largura, altura) do recurso de dobramento, se houver um.

Aqui está uma captura de tela do exemplo de demonstração de API mostrando as informações do dispositivo do pacote do Gerenciador de Janelas do Jetpack:

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

Implementar o Gerenciador de Janelas do Jetpack no Unity

Siga estas etapas para personalizar a configuração de build do aplicativo Android e implementar o Gerenciador de Janelas do Jetpack. Você também pode examinar o código neste exemplo.

  1. No Unity, vá para Editar>Project Configurações...>Jogador>(Android)>Publicando Configurações e selecione estas opções de build:

    Screenshot shows the Publishing Settings Build options list.

    Esta etapa coloca novos itens nos ativos/plug-ins/Android do projeto, que são personalizados para dar suporte ao pacote do Gerenciador de Janelas.

  2. Atualize o mainTemplate.gradle para incluir o Gerenciador de Janelas do Jetpack no projeto, adicionando as seguintes dependências:

    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. Atualize o arquivo gradleTemplate.properties adicionando a seguinte linha:

    android.useAndroidX = true    
    
  4. O aplicativo precisa de uma atividade personalizada para implementar a funcionalidade do gerenciador de janelas e expor informações ao C#. Crie um arquivo FoldablePlayerActivity.java na mesma pasta Ativos/Plug-ins/Android e atualize AndroidManifest.xml para fazer referência à nova classe:

    <activity android:name="com.microsoft.device.dualscreen.unity.FoldablePlayerActivity"
    
  5. Adicione a classe completa de FoldablePlayerActivity.java no GitHub.

  6. Copie a classe auxiliar WindowManagerHelper.cs de GitHub para o projeto. A pasta é Assets/SurfaceDuo/Plugins no exemplo.

Os Ativos/Plug-ins/Android agora contêm esses itens, personalizados nas etapas acima:

Screenshot shows Customized Android project configuration files in Unity.

O arquivo WindowManagerHelper.cs está na pasta Assets/SurfaceDuo/Plugins no exemplo, mas essa classe auxiliar pode estar localizada em qualquer lugar no código do jogo.

Depois de implementar alterações de layout com base na presença de um recurso dobrável, você pode testar seu jogo no Surface Duo e em outros dispositivos dobráveis que dão suporte ao Jetpack Window Manager.

Próximas etapas

Examine estes exemplos.