Unity-Spiel für alle Formfaktoren optimieren

Auf dem heutigen hart umkämpften Gaming-Markt ist es wichtiger denn je, eine möglichst große Zielgruppe zu erreichen. Durch die Entwicklung von Spielen für verschiedene Formfaktoren wie Smartphones, Tablets, faltbare Geräte und Computer können Sie eine größere Gruppe potenzieller Spieler erschließen und Ihre Erfolgschancen erhöhen.

Anpassung der Bildschirmgröße unterstützen

Zur Unterstützung verschiedener Formfaktoren muss die Größe des Spiels angepasst werden können. Durch die Anpassung der Größe kann dein Spiel Gerätekonfigurationen wie Hochformat und Querformat, Mehrfenstermodus sowie zugeklappt und aufgeklappt von faltbaren Geräten unterstützen.

Wenn Ihr Spiel nicht alle Konfigurationen für Fenstergröße und -ausrichtung unterstützt, wird Ihr Spiel von den Letterbox-Balken auf der Plattform im Kompatibilitätsmodus dargestellt. Bei Bedarf wird der Spieler darüber informiert, bevor zu einer nicht unterstützten Konfiguration gewechselt wird.

Abbildung 1: Dialogfeld für die Kompatibilität der Konfiguration.

Weitere Informationen findest du unter Größe von großen Bildschirmen anpassen.

Mehrfenstermodus

Abbildung 2: Verschiedene Benutzeroberflächen auf Computern und faltbaren Geräten in der Haltung „Auf dem Tisch“.

Mit dem Mehrfenstermodus können mehrere Apps denselben Bildschirm gleichzeitig teilen. Apps können nebeneinander oder übereinander angezeigt werden (Split-Screen-Modus), eine App in einem kleinen Fenster, die andere Apps überlagert (Bild-im-Bild-Modus), oder einzelne Apps in separaten verschiebbaren Fenstern mit anpassbarer Größe (Freiformat-Modus).

Damit Sie nicht in den Kompatibilitätsmodus wechseln, wenn Ihr Spiel im Mehrfenstermodus ausgeführt wird, müssen Sie deklarieren, dass Ihr Spiel die Größe anpassen kann. Aktivieren Sie dazu in den Unity-Build-Einstellungen die Option Fenster mit anpassbarer Größe.

Abbildung 3: Auflösungs- und Präsentationseinstellungen von Unity für Android

Display-Aussparungen

Auf einigen Geräten ist eine Display-Aussparung ein Bereich, der in die Displayoberfläche hinausreicht. Aussparungen ermöglichen ein randvolles Erlebnis und bieten gleichzeitig Platz für wichtige Sensoren an der Vorderseite des Geräts.

Abbildung 4: Display-Aussparung.

Konfigurieren Sie das Spiel so, dass es sich auf sichere Frames bezieht. Fragen Sie die Unity safeArea API ab, um den sicheren Bereich des Bildschirms in Pixeln zu ermitteln, und passen Sie die Benutzeroberfläche und die UX des Spiels entsprechend an, insbesondere für die Elemente, mit denen Nutzer interagieren können.

Faltbare Haltungen

Faltbare Geräte können sich im zugeklappten Zustand befinden, z. B. FLAT (vollständig geöffnet) oder HALF_OPENED (irgendwo zwischen vollständig geöffnet und vollständig geschlossen). Wenn sich ein Gerät im Status HALF_OPENED befindet, sind je nach Ausrichtung der Faltung zwei Haltungen möglich: die Haltung „Auf dem Tisch“ (horizontale Faltung) und die Buchhaltung (vertikal). Die Haltung „Auf dem Tisch“ sorgt dafür, dass sich die Spieler besser in das Spiel einfühlen und interagieren können.

Abbildung 5: Spiel in einer „Auf dem Tisch“-Haltung mit Hauptansicht auf einem vertikalen Teil des Displays, Steuerung im horizontalen Bereich.

Wenn Sie die Position „Auf dem Tisch“ implementieren möchten, erweitern Sie die standardmäßige Unity-Aktivität und verwenden Sie dann die Layoutbibliothek Jetpack WindowManager, um das Aufklappen Ihres Spiels zu erkennen.

Unity-Beispielprojekt

Das Unity-Beispielprojekt basiert auf dem Unity-2D-Demoprojekt Lost Crypt. Im Beispielprojekt wird gezeigt, wie die Größe eines großen Bildschirms in Unity geändert werden kann. Um große Bildschirme und faltbare Geräte zu unterstützen, sind eine Reihe von Änderungen an den Unity-Build-Optionen sowie Überlegungen am Layout der Kamera und der UI-Canvases erforderlich.

Das Beispielprojekt kann jetzt heruntergeladen werden. Das Projekt enthält vier verschiedene Szenen:

  • Original: Unterstützung für einfache Funktion mit anpassbarer Größe
  • Verankerung:Entspricht der Originalszene, passt sich jedoch an verschiedene Seitenverhältnisse an und vermeidet die Display-Aussparung.
  • HingeAware:Wie „Verankerung“, aber unterstützt die Positionierung „Auf dem Tisch“
  • Hauptmenü: „Szene wird gestartet“, ermöglicht die Navigation zu den anderen Szenen und unterstützt alle Geräteausrichtungen sowie das Auf- und Zuklappen sowie die Haltung „Auf dem Tisch“

Wählen Sie beim Erstellen für Android alle Szenen aus und legen Sie die Hauptmenüszene als Startszene fest.

Abbildung 6. Im Hauptmenü können Sie in der Position „Auf dem Tisch“ zu den anderen Szenen wechseln.

Mit Unterstützung für anpassbare Fenster beginnen

Implementieren Sie die Unterstützung für verschiedene Bildschirmgrößen und Seitenverhältnissen in Ihrer Android-App für große Bildschirme, damit Ihr Spiel oder Ihre App auf verschiedenen Geräten richtig angezeigt wird. Wenn Sie die Größe und das Seitenverhältnis Ihres Spiels ändern möchten, legen Sie in den Build-Einstellungen von Unity die Eigenschaft Fenster mit anpassbarer Größe fest (siehe Abschnitt Mehrfenstermodus). Passen Sie das Seitenverhältnis der Kamera und des Canvas an, damit sie besser auf verschiedene Bildschirme passen. Sehen Sie sich die Projekteinstellungen in den Build-Einstellungen und in der Datei Plugins/Android/AndroidManifest.xml an. Erleben Sie die Vollbild-Funktion in der „Original“-Szene des Projekts.

Abbildung 7. „Original“-Szene unterstützt die Funktion „Fenstergröße anpassen“.

Beeindruckende Vollbilddarstellung mit Display-Aussparungen

Aktivieren Sie Ihr Spiel, um den gesamten Bildschirm zu nutzen, um das Gameplay immersiver zu gestalten. Aktualisieren Sie die Anker- und Kameraeinstellungen der Spiele-UI so, dass sie automatisch an die Bildschirmgröße angepasst werden. So können UI-Elemente ihre Positionen relativ zur Bildschirmgröße beibehalten.

Die Ankerszene verwendet das Skript CameraAspectLock, um auf Änderungen der Gerätekonfiguration über eine erweiterte Aktivität zu reagieren (siehe Assets/Plugins/Android/LargeScreenPlayableActivity.java). Die safeArea API von Unity wird im SafeZoneAPI-Skript demonstriert, das eine Bindung an das SafeZone-Objekt innerhalb der Ankerszene herstellt.

Spielszene im Vollbildmodus auf dem inneren und äußeren Display eines faltbaren Geräts.
Abbildung 8. „Verankerung“-Szene mit Display-Ausschnitt.

Für faltbare Geräte optimieren

Die letzte Szene des Unity-Beispielprojekts, „HingeAware“, enthält ein ConfigurationManager-Objekt, das über Jetpack Library APIs und eine erweiterte Aktivität (siehe Assets/Plugins/Android/LargeScreenPlayableActivity.java) auf die verschiedenen Faltzustände des Zielgeräts reagiert (siehe Assets/Plugins/Android/LargeScreenPlayableActivity.java). In der Szene wird mithilfe des Skripts PanelOnFold die Benutzeroberfläche basierend auf dem Faltstatus des Geräts gesteuert. So wird z. B. der untere Steuerbereich angezeigt, wenn das Gerät auf dem Tisch liegt und angepasst wird.

Abbildung 9. Die „HingeAware“-Szene unterstützt die Haltung auf dem Tisch.