GameActivity Parte di Android Game Development Kit.
GameActivity
è una libreria Jetpack progettata
per aiutare i giochi per Android a elaborare i comandi del ciclo di vita dell'app, gli eventi di input e l'input di testo
nel codice C/C++ dell'applicazione. GameActivity
è un discendente diretto di
NativeActivity
e condivide un'architettura
simile:
Come illustrato nel diagramma precedente, GameActivity
svolge le seguenti
funzioni:
- Interagire con il framework Android tramite il componente lato Java.
- Trasferimento di comandi del ciclo di vita dell'app, eventi di input e testo di input al lato nativo.
- Modellazione del codice sorgente C/C++ in tre componenti logici:
- Le funzioni JNI di GameActivity, che supportano direttamente la funzionalità Java di GameActivity e mettono in coda gli eventi in
native_app_glue
. native_app_glue
, che viene eseguito principalmente nel proprio thread nativo (diverso dal thread principale dell'applicazione) ed esegue le attività con il proprio looper.- Il codice di gioco dell'applicazione, che esegue il polling ed elabora gli eventi in coda
all'interno di
native_app_glue
ed esegue il codice di gioco all'interno del threadnative_app_glue
.
- Le funzioni JNI di GameActivity, che supportano direttamente la funzionalità Java di GameActivity e mettono in coda gli eventi in
Con GameActivity
, puoi concentrarti sullo sviluppo del gioco principale ed evitare
di dedicare troppo tempo alla gestione del codice JNI.
Se hai già familiarità con NativeActivity
, le principali differenze
tra GameActivity
e NativeActivity
sono le seguenti:
GameActivity
viene visualizzato in unSurfaceView
, il che rende molto più semplice l'interazione dei giochi con altri componenti UI.- Per gli eventi di input da tastiera e tocco,
GameActivity
ha un'implementazione completamente nuova con l'interfacciaandroid_input_buffer
, separata daInputQueue
cheNativeActivity
utilizza. GameActivity
è una classe derivata diAppCompatActivity
, che ti consente di utilizzare senza problemi altri componenti Jetpack.ActionBar
,Fragment
e altri sono tutti disponibili.GameActivity
aggiunge la funzionalità di inserimento di testo integrando la libreria GameTextInput.- Le app derivate da
GameActivity
devono creare tutte e tre le parti del codice C/C++ in un'unica libreria. D'altra parte, le funzioni JNI diNativeActivity
fanno parte del framework (sempre caricate dal sistema operativo). Pertanto, solo il codice C/C++ dinative_app_glue
e dell'applicazione devono essere compilati in un'unica libreria. NativeActivity
fa parte del framework Android e ne segue il ciclo di rilascio (in genere annuale).GameActivity
fa parte della libreria Jetpack, che ha un ciclo di rilascio molto più frequente (in genere ogni due settimane); nuove funzionalità e correzioni di bug possono arrivare molto più rapidamente.
Località di rilascio
La libreria GameActivity
è disponibile nei seguenti canali:
- Come parte della libreria Android Jetpack (consigliato)
- Come AOSP codice sorgente
Il codice C/C++ viene fornito come codice sorgente in tutti i canali di rilascio, utilizzando il formato Prefab. La versione 1.2.2 di GameActivity aggiunge una libreria statica alla distribuzione. A partire da questa versione e successive, ti consigliamo di utilizzare la libreria statica anziché il codice sorgente.
Contenuti del pacchetto zip della libreria Jetpack e dell'AGDK
Con la libreria Jetpack e i canali del pacchetto zip AGDK, GameActivity viene rilasciata con un AAR. Questo AAR contiene i seguenti componenti principali:
- Un file JAR per il codice Java
- La libreria statica C/C++
game-activity_static
è inclusa in GameActivity versione 1.2.2 e successive. - Codice sorgente C/C++ (nella cartella
/prefab
)
Le istruzioni di integrazione a cui viene rimandato da questa pagina presuppongono che tu possa utilizzare
Prefab nel tuo sistema di build; in caso contrario, puoi copiare il codice sorgente compresso
nella cartella prefab/modules/game-activity/include
nel tuo sistema di build
ed eseguire i passaggi di integrazione necessari. Esiste una struttura di file simile per
le release in androidx
per la libreria Android Jetpack; per impostazione predefinita,
Gradle decomprime gli AAR nella directory della cache (~/.gradle/caches/...). Puoi trovare
il codice sorgente C/C++ cercando prefab/modules/game-activity/include
e selezionando la posizione nella versione di rilascio che ti interessa.
Per istruzioni sull'integrazione tramite la libreria Jetpack, vedi Guida introduttiva a GameActivity.
Contenuti del codice sorgente AOSP
AOSP contiene sempre il codice sorgente più recente. Segui le istruzioni di compilazione per creare le tue release o integrare direttamente l'origine nel tuo ambiente di compilazione. Il codice sorgente C/C++ viene salvato in una struttura di file simile a quelle della libreria Jetpack e del pacchetto zip AGDK.
Guide all'integrazione
Segui queste guide per integrare GameActivity
nelle tue applicazioni:
Risorse aggiuntive
Per scoprire di più su GameActivity
, consulta quanto segue:
- Note di rilascio di GameActivity e AGDK.
- Utilizza GameTextInput in GameActivity.
- Guida alla migrazione di NativeActivity.
- Documentazione di riferimento di GameActivity.
- Implementazione di GameActivity.
Feedback
Per segnalare bug o richiedere nuove funzionalità per GameActivity, utilizza lo strumento di monitoraggio dei problemi di GameActivity.