GameActivity Część Android Game Development Kit.
GameActivity
to biblioteka Jetpack, która pomaga grom w Androidzie przetwarzać polecenia cyklu życia aplikacji, zdarzenia wejściowe i wprowadzanie tekstu w kodzie C/C++ aplikacji. GameActivity
jest bezpośrednim następcą elementu NativeActivity
i ma podobną architekturę:
Jak widać na powyższym diagramie, GameActivity
wykonuje te funkcje:
- Interakcja z platformą Androida za pomocą komponentu po stronie Javy.
- Przekazywanie poleceń cyklu życia aplikacji, zdarzeń wprowadzania danych i tekstu do części natywnej.
- Modelowanie kodu źródłowego C/C++ w 3 komponentach logicznych:
- funkcje JNI GameActivity, które bezpośrednio obsługują funkcje Java GameActivity i umieszczają zdarzenia w kolejce
native_app_glue
. native_app_glue
, który działa głównie we własnym wątku natywnym (innym niż wątek główny aplikacji) i wykonuje zadania za pomocą pętli.- Kod gry aplikacji, który odpytuje i przetwarza zdarzenia umieszczone w kolejce w
native_app_glue
i wykonuje kod gry w wątkunative_app_glue
.
- funkcje JNI GameActivity, które bezpośrednio obsługują funkcje Java GameActivity i umieszczają zdarzenia w kolejce
Dzięki GameActivity
możesz skupić się na tworzeniu podstawowych elementów gry i uniknąć spędzania zbyt dużej ilości czasu na kodzie JNI.
Jeśli znasz już NativeActivity
, główne różnice między GameActivity
a NativeActivity
są następujące:
GameActivity
jest renderowany jakoSurfaceView
, co znacznie ułatwia grom interakcję z innymi komponentami interfejsu.- W przypadku zdarzeń związanych z dotykiem i wprowadzaniem danych z klawiatury
GameActivity
ma zupełnie nową implementację z interfejsemandroid_input_buffer
, oddzielną od interfejsuInputQueue
, z którego korzystaNativeActivity
. GameActivity
to klasa pochodna klasyAppCompatActivity
, która umożliwia bezproblemowe korzystanie z innych komponentów Jetpack. Dostępne są m.in.ActionBar
,Fragment
i inne.GameActivity
dodaje funkcję wprowadzania tekstu przez integrację biblioteki GameTextInput.- Aplikacje pochodzące z
GameActivity
powinny kompilować wszystkie 3 części kodu C/C++ w jedną bibliotekę. Z drugiej strony funkcje JNINativeActivity
są częścią platformy (zawsze ładowane przez system operacyjny). Dlatego tylko kodnative_app_glue
i kod C/C++ aplikacji powinny być kompilowane w jedną bibliotekę. NativeActivity
jest częścią platformy Android i jest udostępniana zgodnie z jej cyklem wydawniczym (zwykle co roku).GameActivity
jest częścią biblioteki Jetpack, która ma znacznie częstszy cykl wydawniczy (zwykle co 2 tygodnie), dzięki czemu nowe funkcje i poprawki błędów mogą pojawiać się znacznie szybciej.
Lokalizacje zwolnienia
Biblioteka GameActivity
jest dostępna na tych kanałach:
- W ramach biblioteki Android Jetpack (zalecane)
- Kod źródłowy AOSP
Kod C/C++ jest udostępniany jako kod źródłowy we wszystkich kanałach dystrybucji w formacie Prefab. Wersja 1.2.2 biblioteki GameActivity dodaje do dystrybucji bibliotekę statyczną. Od tej wersji zalecamy używanie biblioteki statycznej zamiast kodu źródłowego.
Zawartość biblioteki Jetpack i pakietu ZIP AGDK
W przypadku biblioteki Jetpack i kanałów pakietu ZIP AGDK GameActivity jest udostępniana w formacie AAR. Ten plik AAR zawiera te główne komponenty:
- plik JAR z kodem Java,
- Statyczna biblioteka C/C++
game-activity_static
jest dołączona do GameActivity w wersji 1.2.2 i nowszych. - Kod źródłowy C/C++ (w folderze
/prefab
)
Instrukcje integracji, do których linki znajdziesz na tej stronie, zakładają, że możesz używać Prefab w systemie kompilacji. W przeciwnym razie możesz skopiować kod źródłowy spakowany w folderze prefab/modules/game-activity/include
do systemu kompilacji i wykonać niezbędne kroki integracji. Podobna struktura plików istnieje w przypadku wersji biblioteki Android Jetpack w androidx
. Domyślnie Gradle rozpakowuje pliki AAR w katalogu pamięci podręcznej (~/.gradle/caches/...). Kod źródłowy C/C++ znajdziesz, wyszukując prefab/modules/game-activity/include
i wybierając lokalizację w odpowiedniej wersji.
Instrukcje dotyczące integracji za pomocą biblioteki Jetpack znajdziesz w artykule Pierwsze kroki z GameActivity.
Zawartość kodu źródłowego AOSP
AOSP zawsze zawiera najnowszy kod źródłowy. Postępuj zgodnie z instrukcjami kompilacji, aby tworzyć własne wersje, lub bezpośrednio zintegruj źródło ze środowiskiem kompilacji. Kod źródłowy C/C++ jest zapisywany w strukturze plików podobnej do tej w przypadku biblioteki Jetpack i pakietu ZIP AGDK.
Przewodniki po integracji
Aby zintegrować GameActivity
z aplikacjami, postępuj zgodnie z tymi przewodnikami:
Dodatkowe materiały
Więcej informacji o GameActivity
znajdziesz w tych artykułach:
- Informacje o wersjach GameActivity i AGDK
- Używaj GameTextInput w GameActivity
- Przewodnik po migracji NativeActivity
- Dokumentacja referencyjna GameActivity
- Implementacja GameActivity
Opinia
Aby zgłosić błędy lub poprosić o dodanie nowych funkcji do GameActivity, użyj narzędzia do śledzenia problemów z GameActivity.