GameActivity Część Android Game Development Kit.
GameActivity
to biblioteka Jetpacka, 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 potomkiem 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
, odrębną 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 Androida i podlega jej cyklowi wydawniczemu (zwykle rocznemu).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 wydań
Biblioteka GameActivity
jest dostępna na tych kanałach:
- W ramach biblioteki Android Jetpack (zalecane)
- Jako 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
Biblioteka Jetpack zawiera GameActivity w formacie AAR. Ten plik AAR zawiera te główne komponenty:
- Plik JAR z kodem w języku Java
- Statyczna biblioteka C/C++
game-activity_static
jest dostępna w GameActivity w wersji 1.2.2 i nowszej. - 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][GameActivity implementation]{: .external}, 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 biblioteki Jetpack.
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
- Korzystanie z GameTextInput w GameActivity
- Przewodnik po migracji NativeActivity
- Dokumentacja na temat GameActivity
- Implementacja GameActivity
Opinia
Aby zgłosić błąd lub poprosić o dodanie nowych funkcji w GameActivity, użyj problem trackera GameActivity.