GameActivity เป็นส่วนหนึ่งของ Android Game Development Kit
GameActivity
เป็นไลบรารี Jetpack ที่ออกแบบมาเพื่อช่วยเกม Android ในการจัดการคําสั่งวงจรแอป เหตุการณ์อินพุต และอินพุตข้อความในโค้ด C/C++ ของแอปพลิเคชัน GameActivity
พัฒนามาจาก NativeActivity
โดยตรงและใช้สถาปัตยกรรมที่คล้ายกัน
ดังที่แสดงในแผนภาพด้านบน GameActivity
จะทําหน้าที่ต่อไปนี้
- การโต้ตอบกับเฟรมเวิร์ก Android ผ่านคอมโพเนนต์ฝั่ง Java
- ส่งผ่านคําสั่งวงจรแอป เหตุการณ์การป้อนข้อมูล และข้อความที่ป้อนไปยังฝั่งเนทีฟ
- การสร้างโมเดลซอร์สโค้ด C/C++ เป็นคอมโพเนนต์เชิงตรรกะ 3 รายการ ได้แก่
- ฟังก์ชัน JNI ของ GameActivity ซึ่งรองรับฟังก์ชันการทำงานของ Java ของ GameActivity โดยตรงและจัดคิวเหตุการณ์ไปยัง
native_app_glue
native_app_glue
ซึ่งส่วนใหญ่จะทำงานในเธรดเนทีฟของตัวเอง (แตกต่างจากเธรดหลักของแอปพลิเคชัน) และดำเนินการกับงานด้วย Looper- โค้ดเกมของแอปพลิเคชัน ซึ่งจะตรวจสอบและประมวลผลเหตุการณ์ที่จัดคิวไว้ภายใน
native_app_glue
และเรียกใช้โค้ดเกมภายในเธรดnative_app_glue
- ฟังก์ชัน JNI ของ GameActivity ซึ่งรองรับฟังก์ชันการทำงานของ Java ของ GameActivity โดยตรงและจัดคิวเหตุการณ์ไปยัง
GameActivity
จะช่วยให้คุณมุ่งเน้นที่การพัฒนาเกมหลักและหลีกเลี่ยงการใช้เวลามากเกินไปกับโค้ด JNI
หากคุณคุ้นเคยกับ NativeActivity
อยู่แล้ว ความแตกต่างที่สำคัญระหว่าง GameActivity
กับ NativeActivity
มีดังนี้
GameActivity
จะแสดงผลเป็นSurfaceView
ซึ่งช่วยให้เกมโต้ตอบกับคอมโพเนนต์ UI อื่นๆ ได้ง่ายขึ้นมาก- สําหรับเหตุการณ์การสัมผัสและการป้อนข้อมูลด้วยแป้นพิมพ์
GameActivity
มีการใช้งานแบบใหม่ทั้งหมดที่มีอินเทอร์เฟซandroid_input_buffer
ซึ่งแยกจากInputQueue
ที่NativeActivity
ใช้ GameActivity
เป็นคลาสที่มาจากAppCompatActivity
ซึ่งช่วยให้คุณใช้คอมโพเนนต์อื่นๆ ของ Jetpack ได้อย่างราบรื่นActionBar
,Fragment
และอื่นๆ พร้อมใช้งานทั้งหมดGameActivity
เพิ่มฟังก์ชันการป้อนข้อความโดยการผสานรวมคลัง GameTextInput- แอปที่มาจาก
GameActivity
จะต้องสร้างโค้ด C/C++ ทั้ง 3 ส่วนเป็นไลบรารีเดียว ในทางกลับกัน ฟังก์ชัน JNI ของNativeActivity
เป็นส่วนหนึ่งของเฟรมเวิร์ก (ระบบปฏิบัติการจะโหลดเสมอ) ดังนั้นจึงควรสร้างเฉพาะnative_app_glue
และโค้ด C/C++ ของแอปพลิเคชันเป็นไลบรารีเดียว NativeActivity
เป็นส่วนหนึ่งของเฟรมเวิร์ก Android และเป็นไปตามวงจรการเผยแพร่ (โดยทั่วไปคือรายปี)GameActivity
เป็นส่วนหนึ่งของไลบรารี Jetpack ซึ่งมีรอบการเผยแพร่ที่บ่อยกว่ามาก (โดยปกติคือ 2 สัปดาห์ครั้ง) ฟีเจอร์ใหม่และการแก้ไขข้อบกพร่องจึงจะพร้อมใช้งานเร็วกว่ามาก
สถานที่เผยแพร่
คลัง GameActivity
มีให้บริการในช่องต่อไปนี้
- เป็นส่วนหนึ่งของคลัง Android Jetpack (แนะนำ)
- ในฐานะที่เป็นซอร์สโค้ด AOSP
โค้ด C/C++ จะแสดงเป็นซอร์สโค้ดในช่องทางรุ่นทั้งหมดโดยใช้รูปแบบ Prefab GameActivity เวอร์ชัน 1.2.2 จะเพิ่มไลบรารีแบบคงที่ลงในชุดแจกจ่าย ตั้งแต่เวอร์ชันนี้เป็นต้นไป เราขอแนะนำให้คุณใช้ไลบรารีแบบคงที่แทนซอร์สโค้ด
เนื้อหาของไลบรารี Jetpack และแพ็กเกจ ZIP ของ AGDK
เมื่อใช้ไลบรารี Jetpack และช่องทางแพ็กเกจ ZIP ของ AGDK ระบบจะเผยแพร่ GameActivity ด้วย AAR AAR นี้ประกอบด้วยคอมโพเนนต์หลักต่อไปนี้
- ไฟล์ JAR สำหรับโค้ด Java
- ไลบรารีแบบคงที่ C/C++
game-activity_static
จะรวมอยู่ใน GameActivity เวอร์ชัน 1.2.2 ขึ้นไป - ซอร์สโค้ด C/C++ (ในโฟลเดอร์
/prefab
)
วิธีการผสานรวมที่ลิงก์มาจากหน้านี้ถือว่าคุณสามารถใช้ Prefab ในระบบบิลด์ได้ หากไม่เช่นนั้น คุณสามารถคัดลอกซอร์สโค้ดที่แพ็กไว้ใต้โฟลเดอร์ prefab/modules/game-activity/include
ไปยังระบบบิลด์ แล้วทำตามขั้นตอนการผสานรวมที่จำเป็น โครงสร้างไฟล์ที่คล้ายกันนี้มีอยู่สำหรับรุ่นต่างๆ ในส่วน androidx
สำหรับไลบรารี Android Jetpack โดยค่าเริ่มต้น Gradle จะแตกไฟล์ AAR ในไดเรกทอรีแคช (~/.gradle/caches/...) คุณค้นหาซอร์สโค้ด C/C++ ได้โดยค้นหา prefab/modules/game-activity/include
แล้วเลือกตำแหน่งในส่วนเวอร์ชันที่คุณต้องการเผยแพร่
ดูวิธีการผสานรวมโดยใช้ไลบรารี Jetpack ได้ที่หัวข้อเริ่มต้นใช้งาน GameActivity
เนื้อหาของซอร์สโค้ด AOSP
AOSP มีซอร์สโค้ดล่าสุดเสมอ ทำตามวิธีการสร้างเพื่อสร้างรุ่นของคุณเอง หรือผสานรวมแหล่งที่มาเข้ากับสภาพแวดล้อมการสร้างโดยตรง ซอร์สโค้ด C/C++ จะบันทึกไว้ในโครงสร้างไฟล์ที่คล้ายกับโครงสร้างของไลบรารี Jetpack และแพ็กเกจ ZIP ของ AGDK
คู่มือการผสานรวม
ทำตามคำแนะนำเหล่านั้นเพื่อผสานรวม GameActivity
เข้ากับแอปพลิเคชัน
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับ GameActivity
ได้ที่
- บันทึกประจำรุ่นของ GameActivity และ AGDK
- ใช้ GameTextInput ใน GameActivity
- คำแนะนำในการย้ายข้อมูล NativeActivity
- เอกสารประกอบอ้างอิงเกี่ยวกับ GameActivity
- การติดตั้งใช้งาน GameActivity
ความคิดเห็น
หากต้องการรายงานข้อบกพร่องหรือขอฟีเจอร์ใหม่ใน GameActivity ให้ใช้เครื่องมือติดตามปัญหาของ GameActivity