Mam problem z pochyleniem głowy nad projektowaniem gry. Na platformie Android mam aktywność i ustawiam widok zawartości na niestandardowy widok powierzchni. Niestandardowy widok powierzchni działa jak mój panel i tworzę instancje wszystkich klas oraz wykonuję wszystkie rysunki i obliczenia.
Pytanie: Czy zamiast tego powinienem tworzyć instancje innych klas w mojej działalności?
Teraz tworzę niestandardową klasę wątków, która obsługuje pętlę gry.
Pytanie: Jak korzystać z tej jednej klasy we wszystkich moich zajęciach? Czy też muszę za każdym razem tworzyć osobne wystąpienie rozszerzonej klasy wątku?
W poprzedniej grze miałem wiele poziomów, które musiały utworzyć instancję klasy wątków, aw klasie wątków musiałem ustawić metody konstruktorów dla każdego oddzielnego poziomu, aw pętli użyć instrukcji switch, aby sprawdzić, który poziom musi renderować i aktualizacja. Przepraszam, jeśli to brzmi myląco.
Chcę tylko wiedzieć, czy metoda, której używam, jest nieefektywna (co prawdopodobnie jest) i jak zacząć projektować ją we właściwy sposób. Przeczytałem wiele samouczków i wciąż mam problemy z tym konkretnym tematem. Może link do niektórych samouczków, które to wyjaśniają? Dzięki.
źródło
OpenGL ES
wami powinni wiedzieć, że w rendererOpenGL ES
już mieć swój własny wątek i w tym przypadku nie ma potrzeby ręcznego tworzenia i rozpocząć nowyThread
iRunnable
do tego systemu.Zazwyczaj pętla gry jest zamknięta w jednym działaniu.
po zmianie aktywności wstrzymujesz / zabijasz pętlę gry. Oddzielne działania i tak powinny odpowiadać wstrzymywaniu gry (np. Dlatego, że przełączyłeś się na działanie „wyślij e-mail do znajomych” lub „menu główne”)
Aby uzyskać dodatkowe poziomy, nie powinieneś tworzyć ani przeznaczać nowych wątków ... chyba że przeszedłeś na „ukończenie poziomu, ładowanie następnego poziomu, proszę czekać” Aktywność i będziesz musiał ponownie uruchomić „główną grę” „Aktywność tak czy inaczej. Ale nawet w takim przypadku tak naprawdę nie robisz „dodatkowych” wątków, po prostu tworzysz jeden wątek w tym samym Działaniu, a następnie zabijasz / restartujesz / zabijasz / restartujesz ... itd. za każdym razem, gdy poziom jest ukończony.
źródło
Jeśli rozumiesz niemiecki, ten samouczek jest bardzo miły.
W przypadku języka angielskiego mogę polecić ten samouczek
Odnośnie klasy wątków: Nie wiem, czy naprawdę jest konieczne, abyś mógł odwoływać się do wszystkich klas w swojej aplikacji. W mojej grze rozwiązałem to w ten sposób:
Klasa odpowiedzialna za narysowanie głównego GUI ma nadpisaną metodę renderowania. W tej metodzie wywoływana jest klasa wątków, która aktualizuje wszystkie elementy GUI i przetwarza dane wejściowe użytkownika.
Wątek jest również odpowiedzialny za utrzymanie stałej prędkości klatek. W zależności od rozwijanej gry może to być ważne.
źródło