GameActivity   ส่วนหนึ่งของ Android Game Development Kit

GameActivity เป็นไลบรารี Jetpack ที่ออกแบบมา เพื่อช่วยเกม Android ในการประมวลผลคำสั่งวงจรแอป เหตุการณ์อินพุต และข้อความ อินพุตในโค้ด C/C++ ของแอปพลิเคชัน GameActivity เป็นรุ่นสืบทอดโดยตรงของ NativeActivity และมีสถาปัตยกรรมที่คล้ายกัน

alt_text

ดังที่แสดงในแผนภาพด้านบน GameActivity จะทำหน้าที่ต่อไปนี้

  • การโต้ตอบกับเฟรมเวิร์ก Android ผ่านคอมโพเนนต์ฝั่ง Java
  • ส่งคำสั่งวงจรแอป เหตุการณ์อินพุต และข้อความอินพุตไปยังฝั่งเนทีฟ
  • การสร้างโมเดลซอร์สโค้ด C/C++ เป็น 3 คอมโพเนนต์เชิงตรรกะ
    • ฟังก์ชัน JNI ของ GameActivity ซึ่งรองรับฟังก์ชันการทำงานของ Java ของ GameActivity โดยตรงและจัดคิวเหตุการณ์ไปยัง native_app_glue
    • native_app_glue ซึ่งส่วนใหญ่จะทำงานในชุดข้อความเนทีฟของตัวเอง (แตกต่างจากชุดข้อความหลักของแอปพลิเคชัน) และจะดำเนินการต่างๆ ด้วย Looper ของตัวเอง
    • โค้ดเกมของแอปพลิเคชัน ซึ่งสำรวจและประมวลผลเหตุการณ์ที่อยู่ในคิวภายใน native_app_glue และเรียกใช้โค้ดเกมภายในเธรด native_app_glue

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 เป็นส่วนหนึ่งของเฟรมเวิร์ก (โหลดโดยระบบปฏิบัติการเสมอ) ดังนั้นจึงคาดว่าจะสร้างเฉพาะโค้ด C/C++ ของ native_app_glueและแอปพลิเคชัน เป็นไลบรารีเดียว
  • NativeActivity เป็นส่วนหนึ่งของเฟรมเวิร์ก Android และเป็นไปตามรอบการเผยแพร่ (โดยปกติคือทุกปี) GameActivity เป็นส่วนหนึ่งของไลบรารี Jetpack ซึ่งมีรอบการเปิดตัวที่บ่อยกว่ามาก (โดยปกติคือทุกๆ 2 สัปดาห์) ฟีเจอร์ใหม่ และการแก้ไขข้อบกพร่องจึงมาถึงได้เร็วกว่ามาก

สถานที่เผยแพร่

GameActivity คลังพร้อมให้บริการในช่องต่อไปนี้

โค้ด C/C++ มีให้ใช้งานเป็นซอร์สโค้ดในช่องทางการเผยแพร่ทั้งหมดโดยใช้รูปแบบ Prefab GameActivity เวอร์ชัน 1.2.2 เพิ่มไลบรารีแบบคงที่ลงในการเผยแพร่ ตั้งแต่เวอร์ชันนี้เป็นต้นไป เราขอแนะนำให้คุณใช้ไลบรารีแบบคงที่ แทนซอร์สโค้ด

เนื้อหาของไลบรารี Jetpack และแพ็กเกจ ZIP ของ AGDK

GameActivity จะได้รับการเผยแพร่พร้อมกับ AAR โดยใช้ไลบรารี Jetpack และช่องแพ็กเกจ zip ของ AGDK 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 ให้ใช้ เครื่องมือติดตามปัญหาของ GameActivity