Jetpack-Fenster-Manager für Unity

Jetpack Window Manager ist als Paket verfügbar, das in Ihrem Unity-Projekt enthalten sein kann. Passen Sie das Gradle-Buildsystem an und implementieren Sie eine benutzerdefinierte Basisaktivitätsklasse, und fügen Sie dann eine C#-Hilfsklasse hinzu, die die native Java-API aufruft.

Faltbare und duale Bildschirm-API

Der Code "WindowManagerHelper.cs " stellt diese Methoden bereit, die Informationen verfügbar machen, die vom Jetpack Window Manager bereitgestellt werden:

  • WindowManagerHelper.GetCurrentWindowMetricsBounds. Die Grenzen (links, oben, breite, Höhe) des gesamten Bereichs, den die Anwendung besetzt.
  • WindowManagerHelper.IsSeparating. Ob das Faltfeature Bildschirmbereiche trennt. Dies ist immer TRUE auf dem Surface Duo. Es ist TRUE nur auf einigen anderen faltbaren Geräten, wenn sie gefaltet werden, aber FALSE wenn sie flach sind.
  • WindowManagerHelper.Orientation. Die Ausrichtung des Faltfeatures, wenn es einen gibt. HORIZONTAL oder VERTICAL.
  • WindowManagerHelper.OcclusionType. Ob das Faltfeature Inhalte verdeckt. FULL oder NONE.
  • WindowManagerHelper.State. Der Zustand der Faltung. FLAT oder HALF_OPEN.
  • WindowManagerHelper.Bounds. Die Grenzen (links, oben, breite, Höhe) des Faltfeatures, falls vorhanden.

Nachfolgend finden Sie einen Screenshot des Beispiels für die API-Demonstration mit Geräteinformationen aus dem Jetpack Window Manager-Paket:

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

Implementieren des Jetpack-Fenster-Managers in Unity

Führen Sie die folgenden Schritte aus, um Ihre Android App-Buildkonfiguration anzupassen und Jetpack Window Manager zu implementieren. Sie können den Code auch in diesem Beispiel überprüfen.

  1. Wechseln Sie in Unity zu "Bearbeiten>Project Einstellungen...>Spieler>(Android)>Veröffentlichen Einstellungen und diese Buildoptionen auswählen:

    Screenshot shows the Publishing Settings Build options list.

    Dieser Schritt platziert neue Elemente in den Ressourcen/Plugins/Android des Projekts, die dann angepasst werden, um das Window Manager-Paket zu unterstützen.

  2. Aktualisieren Sie die mainTemplate.gradle , um jetpack Window Manager im Projekt einzuschließen, indem Sie die folgenden Abhängigkeiten hinzufügen:

    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. Aktualisieren Sie die Datei gradleTemplate.properties , indem Sie die folgende Zeile hinzufügen:

    android.useAndroidX = true    
    
  4. Die App benötigt eine benutzerdefinierte Aktivität, um die Funktionen des Fenster-Managers zu implementieren und Informationen an C# verfügbar zu machen. Erstellen Sie eine Datei FoldablePlayerActivity.java im gleichen Ordner "Assets/Plugins/Android", und aktualisieren Sie dann AndroidManifest.xml, um auf die neue Klasse zu verweisen:

    <activity android:name="com.microsoft.device.dualscreen.unity.FoldablePlayerActivity"
    
  5. Fügen Sie die vollständige Klasse von FoldablePlayerActivity.java auf GitHub hinzu.

  6. Kopieren Sie die WindowManagerHelper.cs-Hilfsklasse aus GitHub in das Projekt. Der Ordner ist "Assets/SurfaceDuo/Plugins " im Beispiel.

Die Assets/Plugins/Android enthält jetzt diese Elemente, die in den oben aufgeführten Schritten angepasst wurden:

Screenshot shows Customized Android project configuration files in Unity.

Die Datei "WindowManagerHelper.cs " befindet sich im Ordner "Assets/SurfaceDuo/Plugins " im Beispiel, aber diese Hilfsklasse kann sich überall im Spielcode befinden.

Nachdem Sie Layoutänderungen basierend auf der Anwesenheit eines Faltfeatures implementiert haben, können Sie Ihr Spiel auf Surface Duo und anderen faltbaren Geräten testen, die Jetpack Window Manager unterstützen.

Nächste Schritte

Überprüfen Sie diese Beispiele.