GameActivity Należy do Android Game Development Kit.
GameActivity
to biblioteka Jetpack, która pomaga w przetwarzaniu poleceń cyklu aplikacji, zdarzeń wejściowych i tekstu w kodzie aplikacji C/C++. GameActivity
jest bezpośrednim potomkiem NativeActivity
i ma podobną architekturę:
Jak widać na diagramie powyżej, GameActivity
wykonuje te funkcje:
- Interakcja z platformą Android za pomocą komponentu po stronie Java.
- Przekazywanie poleceń cyklu aplikacji, zdarzeń wprowadzania danych i tekstu do strony natywnej.
- Modelowanie kodu źródłowego C/C++ w 3 elementy logiczne:
- Funkcje JNI GameActivity, które bezpośrednio obsługują funkcjonalność GameActivity w języku Java i umieszczają zdarzenia w kole
native_app_glue
. native_app_glue
, który działa głównie w ramach własnego wątku natywnego (różnego od wątku głównego aplikacji) i wykonuje zadania za pomocą swojego loopera.- Kod gry aplikacji, który odczytuje i przetworzy kolejkę zdarzeń w procesie
native_app_glue
oraz wykona kod gry w wątkunative_app_glue
.
- Funkcje JNI GameActivity, które bezpośrednio obsługują funkcjonalność GameActivity w języku Java i umieszczają zdarzenia w kole
Dzięki GameActivity
możesz skupić się na tworzeniu gry, a nie na kodowaniu JNI.
Jeśli znasz już NativeActivity
, oto główne różnice między GameActivity
a NativeActivity
:
GameActivity
renderuje się doSurfaceView
, co znacznie ułatwia interakcję gier z innymi elementami interfejsu.- W przypadku zdarzeń dotykowych i związanych z wprowadzaniem tekstu
GameActivity
używa zupełnie nowego interfejsuandroid_input_buffer
, który jest oddzielony od interfejsuInputQueue
używanego przezNativeActivity
. GameActivity
to klasa pochodna klasyAppCompatActivity
, która umożliwia bezproblemowe korzystanie z innych komponentów Jetpacka. Dostępne sąActionBar
,Fragment
i inne.GameActivity
dodaje funkcję wprowadzania tekstu przez zintegrowanie biblioteki GameTextInput.- Aplikacje utworzone na podstawie
GameActivity
powinny zawierać wszystkie 3 części kodu C/C++ w jednej bibliotece. Z drugiej strony funkcje JNINativeActivity
są częścią platformy (zawsze ładowane przez system operacyjny). Dlatego do jednej biblioteki należy skompilować tylko kodnative_app_glue
i kod aplikacji w języku C/C++. NativeActivity
jest częścią platformy Android i podąża za jej cyklem wydawniczym (zwykle co roku).GameActivity
jest częścią biblioteki Jetpack, która ma znacznie częstszy cykl wydawniczy (zazwyczaj co 2 tygodnie). Nowe funkcje i poprawki błędów mogą być wprowadzane znacznie szybciej.
Miejsca dozwolonego zwolnienia
Biblioteka GameActivity
jest dostępna w tych kanałach:
- W ramach biblioteki Jetpack na Androida (zalecane)
- Kod źródłowy AOSP
Kod C/C++ jest dostarczany jako kod źródłowy we wszystkich kanałach wersji w formacie Prefab. Wersja 1.2.2 biblioteki GameActivity zawiera stałą bibliotekę w rozprowadzaniu. Od tej wersji i później zalecamy używanie biblioteki statycznej zamiast kodu źródłowego.
Zawartość biblioteki Jetpack i pliku ZIP AGDK
W przypadku kanałów pakietów zip biblioteki Jetpack i AGDK aktywność gry jest publikowana z AAR. Ten raport zawiera te główne komponenty:
- plik JAR z kodem w języku Java,
- Biblioteka statyczna C/C++
game-activity_static
jest dołączona do GameActivity w wersji 1.2.2 lub nowszej. - Kod źródłowy C/C++ (w folderze
/prefab
)
Instrukcje integracji dostępne na tej stronie zakładają, że możesz używać Prefab w systemie kompilacji. W przeciwnym razie możesz skopiować zapakowany w folderze prefab/modules/game-activity/include
kod źródłowy do systemu kompilacji i wykonywać niezbędne czynności integracyjne. Podobna struktura plików występuje w przypadku wersji w folderze androidx
dla biblioteki Jetpack na Androida. Domyślnie Gradle rozpakowuje pliki AAR w swojej lokalizacji 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 ramach wybranej wersji.
Instrukcje dotyczące integracji za pomocą biblioteki Jetpack znajdziesz w artykule Pierwsze kroki z GameActivity.
Treść kodu źródłowego AOSP
AOSP zawiera zawsze najnowszy kod źródłowy. Aby utworzyć własne wersje, postępuj zgodnie z instrukcjami dotyczącymi kompilacji lub zintegruj źródło bezpośrednio ze środowiskiem kompilacji. Kod źródłowy C/C++ jest zapisywany w strukturze plików podobnej do tej używanej w bibliotece Jetpack i pakiecie ZIP AGDK.
Przewodniki integracji
Aby zintegrować GameActivity
z aplikacją, postępuj zgodnie z tymi instrukcjami:
- Rozpocznij
- Używanie danych wejściowych dotyczących tekstu w grze
- Przewodnik po migracji z NativeActivity
Dodatkowe materiały
Aby dowiedzieć się więcej o GameActivity
, zapoznaj się z tymi materiałami:
- Informacje o wersji GameActivity i AGDK
- Używanie GameTextInput w klasie GameActivity
- Przewodnik po migracji z NativeActivity
- Dokumentacja na temat GameActivity.
- Implementacja GameActivity.
Opinia
Aby zgłaszać błędy lub prosić o dodanie nowych funkcji w GameActivity, użyj problem trackera GameActivity.