GameActivity Teil des Android Game Development Kits.
GameActivity
ist eine Jetpack-Bibliothek, die Android-Spielen bei der Verarbeitung von App-Zyklusbefehlen, Eingabeereignissen und Texteingaben im C/C++-Code der Anwendung hilft. GameActivity
ist ein direkter Abkömmling von NativeActivity
und hat eine ähnliche Architektur:
Wie im Diagramm oben dargestellt, führt GameActivity
die folgenden Funktionen aus:
- Interaktion mit dem Android-Framework über die Java-Komponente
- App-Zyklusbefehle, Eingabeereignisse und Eingabetext an die native Seite übergeben.
- C/C++-Quellcode in drei logische Komponenten modellieren:
- Die JNI-Funktionen von GameActivity, die die Java-Funktionen von GameActivity direkt unterstützen und die Ereignisse in
native_app_glue
einreihen. native_app_glue
, der hauptsächlich in einem eigenen nativen Thread (im Gegensatz zum Hauptthread der Anwendung) ausgeführt wird und Aufgaben mit seinem Looper ausführt.- Der Gamecode der Anwendung, der die in
native_app_glue
anstehenden Ereignisse abfragt und verarbeitet und den Gamecode imnative_app_glue
-Thread ausführt.
- Die JNI-Funktionen von GameActivity, die die Java-Funktionen von GameActivity direkt unterstützen und die Ereignisse in
Mit GameActivity
können Sie sich auf die Kernentwicklung Ihres Spiels konzentrieren und müssen nicht zu viel Zeit mit dem JNI-Code verbringen.
Wenn Sie bereits mit NativeActivity
vertraut sind, sind die Hauptunterschiede zwischen GameActivity
und NativeActivity
folgende:
GameActivity
wird in eineSurfaceView
gerendert, was die Interaktion von Spielen mit anderen UI-Komponenten erheblich erleichtert.- Für Touch- und Tastatureingaben hat
GameActivity
eine völlig neue Implementierung mit derandroid_input_buffer
-Oberfläche, die unabhängig von derInputQueue
ist, dieNativeActivity
verwendet. GameActivity
ist eine abgeleitete Klasse vonAppCompatActivity
, mit der Sie andere Jetpack-Komponenten nahtlos verwenden können.ActionBar
,Fragment
und weitere sind verfügbar.GameActivity
bietet eine Texteingabefunktion, da die Bibliothek „GameTextInput“ eingebunden ist.- Bei Apps, die von
GameActivity
abgeleitet sind, werden alle drei Teile des C/C++-Codes in einer Bibliothek erstellt. Die JNI-Funktionen vonNativeActivity
sind dagegen Teil des Frameworks und werden immer vom Betriebssystem geladen. Daher wird nur der C/C++-Code vonnative_app_glue
und der Anwendung in eine Bibliothek eingebunden. NativeActivity
ist Teil des Android-Frameworks und folgt dem Release-Zyklus (in der Regel jährlich).GameActivity
ist Teil der Jetpack-Bibliothek, die einen viel häufigeren Release-Zyklus hat (in der Regel alle zwei Wochen). Neue Funktionen und Fehlerkorrekturen können also viel schneller verfügbar sein.
Veröffentlichungsorte
Die GameActivity
-Bibliothek ist in den folgenden Kanälen verfügbar:
- Als Teil der Android Jetpack-Bibliothek (empfohlen)
- Als AOSP-Quellcode
Der C/C++-Code wird in allen Release-Kanälen als Quellcode im Prefab-Format bereitgestellt. In GameActivity Version 1.2.2 wird der Distribution eine statische Bibliothek hinzugefügt. Ab dieser Version empfehlen wir die Verwendung der statischen Bibliothek anstelle des Quellcodes.
Inhalt der Jetpack-Bibliothek und des AGDK-ZIP-Pakets
Bei den Zip-Paketkanälen der Jetpack-Bibliothek und der AGDK wird GameActivity mit einem AAR veröffentlicht. Diese AAR enthält die folgenden Hauptkomponenten:
- Eine JAR-Datei für Java-Code
- Die C/C++-Static-Bibliothek
game-activity_static
ist in GameActivity-Version 1.2.2 und höher enthalten. - C/C++-Quellcode (im Ordner
/prefab
)
In der Integrationsanleitung, die von dieser Seite verlinkt ist, wird davon ausgegangen, dass Sie Prefab in Ihrem Build-System verwenden können. Andernfalls können Sie den im Ordner prefab/modules/game-activity/include
verpackten Quellcode in Ihr Build-System kopieren und die erforderlichen Integrationsschritte ausführen. Für die Releases unter androidx
der Android Jetpack-Bibliothek gibt es eine ähnliche Dateistruktur. Standardmäßig entpackt Gradle AARs in seinem Cache-Verzeichnis (~/.gradle/caches/...). Sie können den C/C++-Quellcode finden, indem Sie nach prefab/modules/game-activity/include
suchen und den Speicherort unter der gewünschten Release-Version auswählen.
Eine Anleitung zur Integration mit der Jetpack-Bibliothek finden Sie unter Erste Schritte mit GameActivity.
Inhalt des AOSP-Quellcodes
AOSP enthält immer den neuesten Quellcode. Folgen Sie der Buildanleitung, um eigene Releases zu erstellen, oder integrieren Sie die Quelle direkt in Ihre Buildumgebung. Der C/C++-Quellcode wird in einer Dateistruktur gespeichert, die der der Jetpack-Bibliothek und dem AGDK-ZIP-Paket ähnelt.
Integrationsanleitungen
Folgen Sie diesen Anleitungen, um GameActivity
in Ihre Anwendungen einzubinden:
Zusätzliche Ressourcen
Weitere Informationen zu GameActivity
finden Sie unter den folgenden Links:
- Versionshinweise für GameActivity und AGDK
- GameTextInput in GameActivity verwenden
- Anleitung zur Migration von NativeActivity
- Referenzdokumentation zu „GameActivity“
- Implementierung von „GameActivity“
Feedback
Wenn Sie Fehler melden oder neue Funktionen für GameActivity anfordern möchten, verwenden Sie den GameActivity-Issue Tracker.