GameActivity Android Game Development Kit 提供的一項工具
GameActivity
是 Jetpack 程式庫,旨在協助 Android 遊戲處理應用程式 C/C++ 程式碼中的應用程式週期指令、輸入事件和文字輸入內容。GameActivity
是 NativeActivity
的直接子系,具有相似的架構:
如上圖所示,GameActivity
會執行下列函式:
- 透過 Java 端元件與 Android 架構互動。
- 將應用程式週期指令、輸入事件和輸入文字傳遞至原生端。
- 將 C/C++ 原始碼建模為三個邏輯元件:
- GameActivity 的 JNI 函式,可直接支援 GameActivity 的 Java 功能,並將事件排入
native_app_glue
。 native_app_glue
主要在其原生執行緒 (與應用程式的主要執行緒不同) 中執行,並透過其循環器執行工作。- 應用程式的遊戲程式碼會輪詢並處理在
native_app_glue
中加入佇列的事件,並在native_app_glue
執行緒中執行遊戲程式碼。
- GameActivity 的 JNI 函式,可直接支援 GameActivity 的 Java 功能,並將事件排入
使用 GameActivity
時,您可以專注於核心遊戲開發,避免花費太多時間處理 JNI 程式碼。
如果您已經熟悉 NativeActivity
,GameActivity
和 NativeActivity
之間的主要差異如下:
GameActivity
會轉譯為SurfaceView
,讓遊戲更容易與其他 UI 元件互動。- 如果是觸控和按鍵輸入事件,不同於
NativeActivity
使用的InputQueue
,GameActivity
具有包含android_input_buffer
介面的全新實作。 GameActivity
是衍生的AppCompatActivity
類別,可讓您流暢地使用其他 Jetpack 元件。ActionBar
、Fragment
等均可使用。GameActivity
整合 GameTextInput Library 來新增文字輸入功能。- 從
GameActivity
衍生的應用程式應將三個部分的 C/C++ 程式碼全都建構到一個程式庫中。另一方面,NativeActivity
的 JNI 函式屬於架構的一部分 (一律由 OS 載入)。因此,只有native_app_glue
和應用程式的 C/C++ 程式碼會建構在同一個程式庫中。 NativeActivity
屬於 Android 架構的一部分,並且遵循發布週期 (通常為每年一次)。GameActivity
是 Jetpack 程式庫的一部分,其具有更頻繁的發布週期 (通常為每兩週一次);推出新功能和錯誤修正的速度更快。
發布位置
您可以藉由以下管道取得 GameActivity
程式庫:
- 藉由 Android Jetpack 程式庫取得 (推薦使用)
- 從 AGDK 下載頁面下載為 zip 套件
- 做為 Android 開放原始碼計畫的原始碼
在所有發布版本中,C/C++ 程式碼都是以原始碼的形式提供,採用 Prefab 格式。GameActivity 1.2.2 版的發布內容加入了一個靜態資料庫。如果您使用這個版本和之後的版本,建議您優先使用靜態資料庫,不要使用原始碼。
Jetpack 程式庫和 AGDK zip 套件內容
透過 Jetpack 程式庫和 AGDK zip 套件管道發布 GameActivity 時,會包含一個 AAR。這個 AAR 內含以下主要元件:
- Java 程式碼用的 JAR 檔案
- GameActivity 1.2.2 以上版本附有 C/C++ 靜態資料庫
game-activity_static
。 - C/C++ 原始碼 (在
/prefab
資料夾內)
在本頁面連結的整合操作說明中,假設您可以在建構系統中使用 Prefab,如果無法使用,您可以將 prefab/modules/game-activity/include
資料夾內封裝的原始碼複製到建構系統內,然後執行必要的整合步驟。Android Jetpack 程式庫 androidx
所提供的版本也有類似的結構,Gradle 預設會在快取目錄 (~/.gradle/caches/...) 中解開 AAR。只要搜尋 prefab/modules/game-activity/include
,然後選擇所需發布版本下的位置,即可找到 C/C++ 原始碼。
如要瞭解如何使用 Jetpack 程式庫進行整合,請參閱「開始使用 GameActivity」。
對於 AGDK 程式庫 zip 套件,請按照下列步驟取得 C/C++ 程式碼:
- 解壓縮下載的套件。
- 在解壓縮完畢的套件中,找到 GameActivity-release.aar 並解壓縮。
- 在
prefab/modules/game-activity/include
中找出並複製所有 C/C++ 原始碼,包括以下內容:GameActivity
相關 C/C++ 程式碼為game-activity
GameTextInput
相關 C/C++ 程式碼為game-text-input
Android 開放原始碼計畫的原始碼內容
Android 開放原始碼計畫一律都會內附最新版的原始碼。請按照「建構說明」建立自己的版本,或直接把原始碼整合到建構環境內。C/C++ 原始碼會按照和 Jetpack 程式庫和 AGDK zip 套件類似的檔案結構儲存。
整合指南
請按照下列指南將 GameActivity
整合到應用程式中:
其他資源
如要進一步瞭解 GameActivity
,請參閱以下說明:
- GameActivity 和 AGDK 版本資訊。
- 使用 GameActivity 中的 GameTextInput。
- NativeActivity 遷移指南。
- GameActivity 參考說明文件。
- GameActivity 實作說明。
意見回饋:
如要向 GameActivity 回報錯誤或要求新功能,請使用 GameActivity Issue Tracker。