Partager via


Jetpack Window Manager pour Unity

Jetpack Window Manager est disponible en tant que package pouvant être inclus dans votre projet Unity. Personnalisez le système de build gradle et implémentez une classe d’activité de base personnalisée, puis ajoutez une classe d’assistance C# qui appelle l’API Java native.

API pliable et double écran

Le code WindowManagerHelper.cs fournit ces méthodes qui exposent les informations fournies par le Gestionnaire de fenêtres Jetpack :

  • WindowManagerHelper.GetCurrentWindowMetricsBounds. Les limites (gauche, supérieure, largeur, hauteur) de la zone entière occupée par l’application.
  • WindowManagerHelper.IsSeparating. Indique si la fonctionnalité de pliage sépare les zones d’écran. Il s’agit toujours TRUE du Surface Duo. C’est TRUE sur d’autres appareils pliables seulement quand ils sont pliés, mais FALSE quand ils sont plats.
  • WindowManagerHelper.Orientation. Orientation de la fonctionnalité de pliage, s’il en existe un. HORIZONTAL ou VERTICAL.
  • WindowManagerHelper.OcclusionType. Indique si la fonctionnalité de pliage masque le contenu. FULL ou NONE.
  • WindowManagerHelper.State. État du pliage. FLAT ou HALF_OPEN.
  • WindowManagerHelper.Bounds. Limites (gauche, supérieure, largeur, hauteur) de la fonctionnalité de pliage, s’il en existe un.

Voici une capture d’écran de l’exemple de démonstration d’API montrant les informations de l’appareil à partir du package Jetpack Window Manager :

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

Implémenter Jetpack Window Manager dans Unity

Suivez ces étapes pour personnaliser votre configuration de build d’application Android et implémenter Jetpack Window Manager. Vous pouvez également examiner le code dans cet exemple.

  1. Dans Unity, accédez à Modifier>Project Paramètres...>Joueur>(Android)>Publication Paramètres et sélectionnez les options de build suivantes :

    Screenshot shows the Publishing Settings Build options list.

    Cette étape place de nouveaux éléments dans les ressources/plug-ins/Android du projet, qui sont ensuite personnalisés pour prendre en charge le package Du Gestionnaire de fenêtres.

  2. Mettez à jour le mainTemplate.gradle pour inclure Jetpack Window Manager dans le projet, en ajoutant les dépendances suivantes :

    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. Mettez à jour le fichier gradleTemplate.properties en ajoutant la ligne suivante :

    android.useAndroidX = true    
    
  4. L’application a besoin d’une activité personnalisée pour implémenter la fonctionnalité du gestionnaire de fenêtres et exposer des informations à C#. Créez un fichier FoldablePlayerActivity.java dans le même dossier Assets/Plugins/Android, puis mettez à jour AndroidManifest.xml pour référencer la nouvelle classe :

    <activity android:name="com.microsoft.device.dualscreen.unity.FoldablePlayerActivity"
    
  5. Ajoutez la classe complète à partir de FoldablePlayerActivity.java sur GitHub.

  6. Copiez la classe d’assistance WindowManagerHelper.cs de GitHub dans le projet. Le dossier est Assets/SurfaceDuo/Plugins dans l’exemple.

Les ressources/plug-ins/Android contiennent désormais ces éléments, personnalisés dans les étapes ci-dessus :

Screenshot shows Customized Android project configuration files in Unity.

Le fichier WindowManagerHelper.cs se trouve dans le dossier Assets/SurfaceDuo/Plugins de l’exemple, mais cette classe d’assistance peut se trouver n’importe où dans votre code de jeu.

Une fois que vous avez implémenté des modifications de disposition en fonction de la présence d’une fonctionnalité de pliage, vous pouvez tester votre jeu sur Surface Duo et d’autres appareils pliables qui prennent en charge Jetpack Window Manager.

Étapes suivantes

Passez en revue ces exemples.