Zadbaj o doskonały wygląd gry Unity w każdym formacie

Na dzisiejszym konkurencyjnym rynku gier ważniejsze niż kiedykolwiek jest dotarcie do jak najszerszego grona odbiorców. Tworząc gry na różne formaty, np. telefony, tablety, urządzenia składane i komputery, możesz dotrzeć do większej grupy potencjalnych graczy i zwiększyć swoje szanse na sukces.

Obsługa zmiany rozmiaru ekranu

Aby można było korzystać z różnych formatów, gra musi mieć możliwość zmiany rozmiaru. Możliwość zmiany rozmiaru umożliwia korzystanie z gier w taki sposób jak orientacja pionowa i pozioma, tryb wielu okien czy złożony i rozłożony urządzenie.

Jeśli Twoja gra nie obsługuje wszystkich konfiguracji rozmiaru okna i orientacji, platforma oznacza ją w trybie zgodności i w razie potrzeby wyświetla komunikat z prośbą o zmianę konfiguracji na nieobsługiwaną konfigurację.

Rysunek 1. Okno zgodności konfiguracji.

Więcej informacji znajdziesz w artykule o obsłudze zmiany rozmiaru dużego ekranu.

Tryb wielu okien

Rysunek 2. Różne interfejsy użytkownika na komputerze i urządzenia składane w pozycji stołowej.

Tryb wielu okien umożliwia jednoczesne używanie tego samego ekranu przez wiele aplikacji. Aplikacje mogą znajdować się obok siebie lub jedna nad drugą (w trybie podzielonego ekranu), jedną w małym oknie nakładającą się na inne aplikacje (tryb obraz w obrazie) lub pojedyncze aplikacje w osobnych ruchomych oknach z możliwością zmiany rozmiaru (tryb swobodny).

Aby uniknąć przejścia w tryb zgodności, gdy gra działa w trybie wielu okien, zadeklaruj, że gra obsługuje możliwość zmiany rozmiaru. Aby to zrobić, w ustawieniach kompilacji Unity włącz opcję Okno z możliwością zmiany rozmiaru.

Rysunek 3. Ustawienia rozdzielczości i prezentacji w Unity na Androidzie.

Wycięcia w ekranie

Wycięcie w ekranie to na niektórych urządzeniach obszar, który rozciąga się na powierzchnię wyświetlacza. Wycięcia umożliwiają odbiór od krawędzi do krawędzi i zapewniają miejsce na ważne czujniki z przodu urządzenia.

Rysunek 4. Wycięcie w ekranie.

Aby zapewnić swojej grze jak największą wygodę, skonfiguruj ją tak, aby uwzględniała bezpieczne ramki. Zapytanie o interfejs safeArea w Unity pozwala określić bezpieczny obszar ekranu (w pikselach) oraz odpowiednio dostosować interfejs i interfejs gry, zwłaszcza pod kątem elementów, z którymi użytkownicy mogą wchodzić w interakcje.

Składane pozycje

Urządzenia składane mogą być różne po złożeniu, np. FLAT (w pełni otwarte) lub HALF_OPENED (np. w pełni otwarte lub całkowicie zamknięte). Gdy urządzenie znajduje się w stanie HALF_OPENED, w zależności od orientacji strony widocznej na ekranie możesz wybrać jedną z dwóch pozycji: na stole (złożenie w poziomie) lub książki (złożenie w pionie). Użyj pozycji na stole, aby zwiększyć zaangażowanie i zaangażowanie gracza.

Rysunek 5. Gra w sposobie na stole z widokiem głównym w pionowej części wyświetlacza, elementami sterującymi w poziomie.

Aby wdrożyć stan stołu, rozszerz domyślną aktywność w Unity, a potem użyj biblioteki układu Jetpack WindowManager, by uświadomić sobie, że gra składa się ze złożenia.

Przykładowy projekt w Unity

Przykładowy projekt w Unity jest oparty na projekcie demonstracyjnym Unity 2D Lost Crypt. Przykładowy projekt pokazuje, jak można zmienić rozmiar dużego ekranu w Unity. Obsługa dużego ekranu i urządzeń składanych wymaga wprowadzenia wielu zmian w opcjach kompilacji Unity oraz kwestii związanych z układem aparatu i obszarów roboczych interfejsu.

Przykładowy projekt jest dostępny do pobrania teraz. Projekt zawiera 4 różne sceny:

  • Oryginał: obsługa podstawowej funkcji z możliwością zmiany rozmiaru.
  • Zakotwiczenie: tak samo jak scena „oryginalna”, ale dostosowuje się do różnych formatów obrazu i nie uwzględnia wycięcia w ekranie.
  • HingeAware: działa tak samo jak scena „kotwiczenie”, ale obsługuje stan stołu.
  • Menu główne: scena początkowa, która pozwala przejść do innych scen i w pełni obsługuje wszystkie orientacje urządzenia, składanie, rozwijanie i ustawianie na stole.

Tworząc kompilację pod kątem Androida, wybierz wszystkie sceny i ustaw scenę „Menu główne” jako scenę początkową.

Rysunek 6. Scena „Menu główne” umożliwia przechodzenie do innych scen w pozycji stołu.

Zacznij od obsługi okna ze zmianą rozmiaru

Zaimplementuj obsługę różnych rozmiarów i formatów obrazu w aplikacji na duży ekran na Androida, aby zapewnić prawidłowe wyświetlanie gry lub aplikacji na różnych urządzeniach. Włącz w grze zmianę rozmiaru i formatu obrazu, ustawiając właściwość Okno z możliwością zmiany rozmiaru w ustawieniach kompilacji Unity (zobacz sekcję „Tryb wielu okien”). Dostosuj proporcje aparatu i odbitki na płótnie, aby lepiej pasowały do różnych ekranów. Wyświetl ustawienia projektu w Ustawieniach kompilacji i w pliku Plugins/Android/AndroidManifest.xml. Zobacz funkcję pełnego ekranu, z którą możesz zmienić rozmiar, w scenie „oryginalnej”.

Rysunek 7. Scena „Oryginalna” obsługuje funkcję okna z możliwością zmiany rozmiaru.

Pełne wycięcie w ekranie

Włącz w grze cały ekran, aby rozgrywka była jak najlepsza i dawała użytkownikom lepsze wrażenia. Zaktualizuj kotwicę interfejsu gry i ustawienia kamery, by automatycznie dostosowywać je do rozmiaru ekranu. Dzięki temu elementy interfejsu mogą utrzymywać swoje położenie względem rozmiaru ekranu.

Scena „kotwiczenia” używa skryptu CameraAspectLock, aby reagować na zmiany konfiguracji urządzenia za pomocą aktywności rozszerzonej (patrz: Assets/Plugins/Android/LargeScreenPlayableActivity.java). Interfejs API SafeArea Unity jest przedstawiony w skrypcie SafeZoneAPI, który wiąże się z obiektem SafeZone w scenie „kotwiczenia”.

Pełny ekran sceny z gry na wewnętrznym i zewnętrznym wyświetlaczu urządzenia składanego.
Rysunek 8. Scena „zakotwiczona” z wycięciem w ekranie.

Optymalizacja pod kątem urządzeń składanych

Ostatnia scena przykładowego projektu w Unity, „HingeAware”, zawiera obiekt ConfigurationManager, który reaguje na różne stany złożenia urządzenia docelowego za pomocą interfejsów API biblioteki Jetpack oraz rozszerzonej aktywności (patrz: Assets/Plugins/Android/LargeScreenPlayableActivity.java). Scena korzysta ze skryptu PanelOnFold do sterowania interfejsem na podstawie stanu złożenia urządzenia, na przykład przez pokazywanie dolnego panelu kontrolera, gdy kamera pokazuje dolny panel sterowania.

Rysunek 9. Scena „HingeAware” obsługuje stan stołu.