Więc po raz pierwszy portuję grę na Androida w Unity3D. Po drodze natknąłem się na kilka problemów. Mój obecny problem polega na tym, że rozdzielczość nie wydaje się odpowiednia, odcina krawędzie ekranu, a moje zatrzymywanie przewijania w lewo / w prawo nie jest już na właściwym miejscu.
Po przeprowadzeniu drobnych badań wiele osób twierdzi, że musisz ustawić grę jako niezależną od rozdzielczości, aby móc działać na wszystkich urządzeniach z Androidem / iPhonie / iPadzie. Czy to prawda? Jeśli tak, jak mam to zrobić? Jeśli nie, w jaki sposób mogę pomóc w rozwiązaniu problemu rozdzielczości, aby po przeniesieniu do urządzeń mobilnych wyglądało to poprawnie?
EDYCJA: Nadal nie mam tego, czego potrzebuję, rozdzielczości nadal nie działają poprawnie, nawet z kodem i sztuczkami wymienionymi poniżej. Potrzebuję sposobu na dostosowanie rozdzielczości w zależności od urządzenia. Z jakiegoś powodu, gdy próbuję odzyskać rozdzielczość urządzenia za pomocą kodu Mungoid, zwraca 0x0
źródło
Odpowiedzi:
Problemem z Androidem jest to, że każde inne urządzenie ma własny rozmiar ekranu, rozdzielczość i gęstość pikseli. Jeśli chcesz, aby Twoja gra wyglądała identycznie na wszystkich urządzeniach, czeka Cię wiele pracy i prawdopodobnie nigdy nie będziesz zadowolony z rezultatów. Gra będzie rozciągnięta na ekranach szerokoekranowych lub skompresowana na ekranach niepanoramicznych. Sugeruję, abyś zdecydował, co jest naprawdę ważne, i pozwolił, by cokolwiek innego się nieco potoczyło.
Bez zrzutów ekranu lub wiedzy na temat Twojej gry i tego, jak ona wygląda, wszyscy możemy spekulować na temat rozwiązań, ale nie mamy konkretnego kierunku, aby udzielić konkretnej porady.
W Unity możesz uzyskać dostęp do wymiarów bieżącego ekranu za pomocą klasy Screen :
Screen.width
iScreen.height
(między innymi właściwościami). Następnie możesz zmienić współczynnik kształtu kamery , aby zmienić to, co jest widoczne na ekranach o różnych rozmiarach, w zależności od wymiarów ekranu i osobistych oczekiwań co do tego, co powinno być widoczne.Jeśli musisz upewnić się, że ekrany HUD są odpowiednio skalowane, możesz to zrobić, zmieniając macierz transformacji GUI w oparciu o wymiary ekranu w każdej
OnGUI()
funkcji. Zrobiłem to wcześniej, tworząc ten prosty skrypt i dołączając go do wszystkiego, co renderowało elementy GUI, które chciałem skalować:Następnie w rzeczywistych
OnGUI()
funkcjach od razu ustawiam macierz transformacji:źródło
Screen.width
iw.height
połączeniu zCamera.fieldOfView
iCamera.aspect
aby odtworzyć ten sam widok na dowolnych rozmiarach ekranu. Wymagałoby to tylko jakiegoś wyzwalacza, aby dokładnie ustalić, jak to zrobić.możesz spróbować czegoś takiego i zastosować to. Sądzę, że urządzenie mobilne powinno zwrócić tylko jedną rozdzielczość.
Zajrzyj również tutaj, aby uzyskać więcej informacji na temat ekranu w jedności http://unity3d.com/support/documentation/ScriptReference/Screen.html
źródło