GameActivity Część pakietu Android Game Development Kit.
GameActivity
to biblioteka Jetpack, która ułatwia grom na Androida przetwarzanie poleceń cyklu aplikacji, zdarzeń wejściowych i tekstu w kodzie C/C++ aplikacji. GameActivity
jest bezpośrednim potomkiem elementu NativeActivity
i ma podobną architekturę:
Jak widać na tym diagramie, GameActivity
wykonuje te funkcje:
- Interakcja z platformą Androida za pomocą komponentu po stronie Java.
- Przekazywanie poleceń cyklu aplikacji, zdarzeń wejściowych i tekstu wejściowego na stronę oryginalną.
- Modelowanie kodu źródłowego w języku C/C++ na 3 komponenty logiczne:
- Funkcje JNI interfejsu GameActivity, które bezpośrednio obsługują funkcje Java usługi GameActivity i dodają zdarzenia do kolejki zdarzeń
native_app_glue
. native_app_glue
, który działa głównie we własnym wątku natywnym (innym niż główny wątek aplikacji) i wykonuje zadania przy użyciu swojego loopera.- Kod gry w aplikacji, który sonduje i przetwarza zdarzenia znajdujące się w kolejce w elemencie
native_app_glue
, a potem wykonuje kod gry w wątkunative_app_glue
.
- Funkcje JNI interfejsu GameActivity, które bezpośrednio obsługują funkcje Java usługi GameActivity i dodają zdarzenia do kolejki zdarzeń
Dzięki GameActivity
możesz skupić się na tworzeniu podstawowej gry i nie tracić czasu na zajmowanie się kodem JNI.
Jeśli znasz już NativeActivity
, główne różnice między GameActivity
a NativeActivity
są następujące:
GameActivity
renderuje się w elemencieSurfaceView
, co znacznie ułatwia interakcję gier z innymi komponentami interfejsu.- W przypadku zdarzeń dotyku i kluczowych zdarzeń wejściowych funkcja
GameActivity
ma zupełnie nową implementację w interfejsieandroid_input_buffer
, niezależną odInputQueue
, z którego korzystaNativeActivity
. GameActivity
to klasa derywowanaAppCompatActivity
, która pozwala na płynne korzystanie z innych komponentów Jetpacka.ActionBar
,Fragment
i inne są dostępne.GameActivity
dodaje funkcję wprowadzania tekstu przez integrację biblioteki GameTextInput.- Aplikacje utworzone na podstawie
GameActivity
powinny kompilować wszystkie 3 części kodu C/C++ w jedną bibliotekę. Z drugiej strony funkcje JNI wNativeActivity
są częścią platformy (zawsze ładowane przez system operacyjny). Dlatego tylko kodnative_app_glue
i kod C/C++ aplikacji powinny być wbudowane w jedną bibliotekę. NativeActivity
to część platformy Androida i przebiega zgodnie z cyklem publikowania (zwykle co rok).GameActivity
to część biblioteki Jetpacka, która ma znacznie częstszy cykl publikowania (zwykle co 2 tygodnie). Nowe funkcje i poprawki błędów pojawiają się znacznie szybciej.
Lokalizacje wersji
Biblioteka GameActivity
jest dostępna na tych kanałach:
- Należy do biblioteki Androida Jetpack (zalecane)
- W postaci pakietu ZIP, który można pobrać ze strony pobierania AGDK
- Jako kod źródłowy AOSP
Kod C/C++ jest dostarczany jako kod źródłowy we wszystkich kanałach wersji w formacie Prefab. GameActivity w wersji 1.2.2 dodaje do dystrybucji statyczną bibliotekę. Od tej i nowszych wersji zalecamy używanie biblioteki statycznej zamiast kodu źródłowego.
Zawartość biblioteki Jetpack i pakietu ZIP AGDK
Dzięki bibliotece Jetpack i kanałom z pakietami zip AGDK GameActivity jest publikowany wraz z automatycznym stosowaniem rekomendacji. Ten AAR składa się z następujących głównych komponentów:
- Plik JAR z kodem Java
- Biblioteka statyczna C/C+
game-activity_static
jest zawarta w GameActivity w wersji 1.2.2 i nowszych. - Kod źródłowy C/C++ (w folderze
/prefab
)
W instrukcjach integracji, do których link znajdziesz na tej stronie, zakładamy, że możesz używać prefab w swoim systemie kompilacji. W przeciwnym razie możesz skopiować do swojego systemu kompilacji kod źródłowy spakowany z folderu prefab/modules/game-activity/include
i wykonać niezbędne czynności integracji. Podobna struktura plików ma zastosowanie w przypadku wersji w androidx
biblioteki Android Jetpack. Domyślnie Gradle rozpakowuje AAR w swoim katalogu pamięci podręcznej (~/.gradle/caches/...). Aby znaleźć kod źródłowy w języku C/C++, wyszukaj ciąg prefab/modules/game-activity/include
i pobierz lokalizację z planowanej wersji.
Instrukcje integracji z użyciem biblioteki Jetpack znajdziesz w artykule o pierwszych krokach z GameActivity.
W przypadku pakietu pocztowego biblioteki AGDK wykonaj te czynności, aby uzyskać kod C/C++:
- Rozpakuj pobrany pakiet.
- W rozpakowanym pakiecie rozpakuj plik GameActivity-release.aar.
- Znajdź i skopiuj cały kod źródłowy C/C++ w sekcji
prefab/modules/game-activity/include
, który zawiera następujące elementy:game-activity
dlaGameActivity
powiązanego kodu C/C++game-text-input
dlaGameTextInput
powiązanego kodu C/C++
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 zintegrować źródło bezpośrednio ze środowiskiem kompilacji. Kod źródłowy C/C++ jest zapisywany w strukturze plików podobnej do tej w bibliotece Jetpack i w pakiecie ZIP AGDK.
Przewodniki dotyczące integracji
Postępuj zgodnie z tymi przewodnikami, aby zintegrować usługę GameActivity
ze swoimi aplikacjami:
Dodatkowe materiały
Więcej informacji o GameActivity
znajdziesz tutaj:
- Informacje o wersjach GameActivity i AGDK.
- Użyj funkcji GameTextInput w ramach GameActivity.
- Przewodnik po migracji NativeActivity
- Dokumentacja referencyjna GameActivity.
- Implementacja GameActivity.
Opinia
Jeśli chcesz zgłosić błędy lub poprosić o nowe funkcje w GameActivity, skorzystaj z narzędzia do śledzenia problemów z GameActivity.