ตั้งค่า Google Play Games สำหรับ Unity และลงชื่อเข้าใช้

เอกสารนี้จะแนะนำการตั้งค่าโปรเจ็กต์ Unity เพื่อใช้ปลั๊กอิน Google Play Games สำหรับ Unity คุณจะได้ดูวิธีติดตั้งปลั๊กอินและกำหนดค่าโปรเจ็กต์ Unity เอกสารนี้ยังอธิบายวิธียืนยันบริการลงชื่อเข้าใช้ด้วย

ก่อนเริ่มต้น

ตรวจสอบข้อกำหนดของซอฟต์แวร์ ตั้งค่า Play Console และติดตั้ง Unity Hub

การติดตั้งปลั๊กอิน

หากต้องการดาวน์โหลดและติดตั้งปลั๊กอิน Google Play Games สำหรับ Unity ให้ทำตามขั้นตอนต่อไปนี้ใน Unity Hub

  1. ดาวน์โหลด GitHub repo

  2. ในไดเรกทอรี current-build ให้ค้นหาไฟล์ unitypackage ไฟล์นี้แสดงถึงปลั๊กอิน ตัวอย่างเช่น ไฟล์ควรมีลักษณะดังต่อไปนี้

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

ตั้งค่าโปรเจ็กต์ Unity

หากต้องการตั้งค่าโปรเจ็กต์ Unity ในการตั้งค่าโปรแกรมเล่น ให้ทำตามขั้นตอนต่อไปนี้

  1. เปิดโปรเจ็กต์เกม

  2. ใน Unity Hub ให้คลิกเนื้อหา > นําเข้าแพ็กเกจ > แพ็กเกจที่กําหนดเองเพื่อนําเข้าไฟล์ unitypackage ไปยังเนื้อหาของโปรเจ็กต์

  3. ตรวจสอบว่าได้ตั้งค่าแพลตฟอร์มการสร้างปัจจุบันเป็น Android

    1. ในเมนูหลัก ให้คลิกไฟล์ > การตั้งค่าการสร้าง

    2. เลือก Android แล้วคลิกเปลี่ยนแพลตฟอร์ม

    3. คุณควรเห็นรายการเมนูใหม่ในส่วน Window > Google Play Games หากไม่มี ให้รีเฟรชชิ้นงานโดยคลิกชิ้นงาน > รีเฟรช แล้วลองตั้งค่าแพลตฟอร์มการสร้างอีกครั้ง

  4. ใน Unity Hub ให้คลิกไฟล์ > การตั้งค่าบิลด์ > การตั้งค่าโปรแกรมเล่น > การตั้งค่าอื่นๆ

  5. เลือกเวอร์ชันในช่องระดับ API เป้าหมาย

  6. ป้อน IL2CPP ในช่องแบ็กเอนด์สคริปต์

  7. เลือกค่าในช่องสถาปัตยกรรมเป้าหมาย

  8. จดชื่อแพ็กเกจ package_name ไว้ คุณจะใช้ข้อมูลนี้ได้ในภายหลัง

การตั้งค่าโปรแกรมเล่นในโปรเจ็กต์ Unity
การตั้งค่าโปรแกรมเล่นในโปรเจ็กต์ Unity

สร้างคีย์สโตร์ใหม่

คุณต้องมีคีย์เพื่อตรวจสอบข้อมูลเข้าสู่ระบบ โปรดทำตามขั้นตอนต่อไปนี้

  1. ใน Unity Hub ให้คลิกไฟล์ > การตั้งค่าบิลด์ > การตั้งค่าเพลเยอร์
  2. ในส่วนการตั้งค่าการเผยแพร่ ให้คลิกเครื่องมือจัดการคีย์สโตร์
    1. ในหน้าต่างเครื่องมือจัดการคีย์สโตร์ ให้คลิกคีย์สโตร์ > สร้างใหม่ > ได้ทุกที่
    2. เลือกโฟลเดอร์และตั้งชื่อที่เก็บคีย์
    3. ในช่องรหัสผ่าน ให้ป้อนและยืนยันรหัสผ่าน
    4. คลิกเพิ่มคีย์

จดชื่อโฟลเดอร์ไว้ คุณใช้ชื่อนี้เพื่อสร้างข้อมูลเข้าสู่ระบบใน Google Cloud ได้

คัดลอกทรัพยากร Android จาก Play Console

รางวัล ลีดเดอร์บอร์ด และกิจกรรมแต่ละรายการที่คุณสร้างใน Play Console จะมีทรัพยากร Android ที่คุณใช้เมื่อตั้งค่าโปรเจ็กต์ Unity

หากต้องการรับทรัพยากร Android สำหรับเกม ให้ทำตามขั้นตอนต่อไปนี้

  1. เปิดเกมใน Google Play Console

  2. ในหน้าบริการเกมของ Play - การกําหนดค่า (เติบโต > บริการเกมของ Play > การตั้งค่าและการจัดการ > การกําหนดค่า) คลิกรับแหล่งข้อมูล

  3. ในหน้าต่างทรัพยากร ให้คลิกแท็บ Android(XML)

  4. เลือกและคัดลอกเนื้อหาแหล่งข้อมูล Android (AndroidManifest.xml)

เพิ่มทรัพยากร Android ลงในโปรเจ็กต์ Unity

เพิ่มทรัพยากร Android ต่อไปนี้ลงในโปรเจ็กต์ Unity

  1. ใน Unity Hub ให้คลิกหน้าต่าง > Google Play Games > การตั้งค่า > การตั้งค่า Android

    • ในช่องไดเรกทอรีสำหรับบันทึกค่าคงที่ ให้ป้อนชื่อโฟลเดอร์สำหรับไฟล์ค่าคงที่
    • ในช่องชื่อคลาสค่าคงที่ ให้ป้อนชื่อคลาส C# ที่จะสร้าง รวมถึงเนมสเปซ

      เช่น หากคลาส C# คือ id.cs และอยู่ภายใต้ เนื้อหา > myproject > scripts > id.cs ชื่อคลาสของค่าคงที่อาจเป็น myproject.scripts.id

    • ในช่องคําจํากัดความของทรัพยากร ให้วางข้อมูลทรัพยากร Android (ไฟล์ AndroidManifest.xml) ที่คุณคัดลอกมาจาก Google Play Console

    • ไม่บังคับ: ในช่องรหัสไคลเอ็นต์ ให้ป้อนรหัสไคลเอ็นต์ของเว็บแอปที่ลิงก์

      หากต้องการรับรหัสไคลเอ็นต์สำหรับเกมจาก Google Cloud โปรดดูหัวข้อการสร้างรหัสไคลเอ็นต์

      ขั้นตอนนี้จำเป็นเฉพาะในกรณีที่คุณมีแบ็กเอนด์บนเว็บสำหรับเกมและต้องใช้รหัสการให้สิทธิ์เซิร์ฟเวอร์เพื่อแลกกับโทเค็นการเข้าถึงจากเซิร์ฟเวอร์แบ็กเอนด์ หรือในกรณีที่คุณต้องการโทเค็นระบุตัวตนเพื่อให้ผู้เล่นเรียกใช้ API อื่นๆ ที่ไม่ใช่เกม

    • คลิกตั้งค่า ซึ่งจะกำหนดค่าเกมด้วยรหัสไคลเอ็นต์และสร้างคลาส C# ที่มีค่าคงที่สำหรับทรัพยากร Android แต่ละรายการ

  2. ใน Unity Hub ให้คลิกหน้าต่าง > Google Play Games > การตั้งค่า > การตั้งค่าการเชื่อมต่อที่อยู่ใกล้เคียง

    • ป้อน package_name ในช่องรหัสบริการการเชื่อมต่อใกล้เคียง

      ใช้ package_name เดียวกันกับที่ใช้ในการตั้งค่าโปรเจ็กต์ Unity

    • คลิกตั้งค่า

เลือกแพลตฟอร์มโซเชียล

ปลั๊กอินบริการเกมของ Google Play ใช้อินเทอร์เฟซโซเชียลของ Unity เพื่อให้เข้ากันได้กับเกมที่ใช้อินเทอร์เฟซดังกล่าวอยู่แล้วเมื่อผสานรวมกับแพลตฟอร์มอื่นๆ อย่างไรก็ตาม ฟีเจอร์บางอย่างมีเฉพาะใน Play Games และนำเสนอเป็นส่วนขยายของอินเทอร์เฟซโซเชียลมาตรฐานที่ Unity ให้บริการ

การเรียก API มาตรฐานเข้าถึงได้ผ่านออบเจ็กต์ Social.Active ซึ่งเป็นการอ้างอิงถึงอินเทอร์เฟซ ISocialPlatform คุณสามารถเข้าถึงส่วนขยายบริการเกมของ Google Play ที่ไม่เป็นไปตามมาตรฐานได้โดยแคสต์ออบเจ็กต์ Social.Active ไปยังคลาส PlayGamesPlatform ซึ่งมีเมธอดเพิ่มเติม

ใช้ปลั๊กอินโดยไม่ลบล้างแพลตฟอร์มโซเชียลเริ่มต้น

เมื่อคุณเรียกใช้ PlayGamesPlatform.Activate บริการเกมของ Google Play จะกลายเป็นแพลตฟอร์มโซเชียลเริ่มต้นของคุณ ซึ่งหมายความว่าการเรียกใช้เมธอดแบบคงที่ใน Social และ Social.Active จะดำเนินการโดยปลั๊กอินบริการเกมของ Google Play ซึ่งเป็นลักษณะการทำงานสำหรับเกมส่วนใหญ่ที่ใช้ปลั๊กอิน

อย่างไรก็ตาม หากต้องการเข้าถึงการใช้งานเริ่มต้นต่อไปด้วยเหตุผลบางประการ (เช่น เพื่อใช้ส่งรางวัลและกระดานผู้นำไปยังแพลตฟอร์มโซเชียลอื่น) คุณสามารถใช้ปลั๊กอินบริการ Google Play Games ได้โดยไม่ต้องลบล้างปลั๊กอินเริ่มต้น หากต้องการทำสิ่งต่อไปนี้

  1. ไม่ต้องโทรหา PlayGamesPlatform.Activate
  2. หาก Xyz เป็นชื่อเมธอดที่คุณต้องเรียกใช้กับคลาส Social อย่าเรียกใช้ Social.Xyz แต่ให้โทรไปที่ PlayGamesPlatform.Instance.Xyz
  3. อย่าใช้ Social.Active เมื่อโต้ตอบกับบริการ Google Play Games แต่ให้ใช้ PlayGamesPlatform.Instance แทน

วิธีนี้จะช่วยให้คุณส่งคะแนนและรางวัลไปยังแพลตฟอร์มโซเชียล 2 แพลตฟอร์มขึ้นไปพร้อมกันได้

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

ยืนยันบริการลงชื่อเข้าใช้

ระบบจะพยายามเชื่อมต่อกับบริการเกมของ Play โดยอัตโนมัติโดยใช้บริการลงชื่อเข้าใช้เมื่อเปิดเกม หากการเชื่อมต่อสำเร็จ เกมจะแสดงข้อความแจ้งให้ลงชื่อเข้าใช้และพร้อมใช้งานปลั๊กอินบริการเกมของ Google Play สำหรับ Unity

หากผู้ใช้ไม่เคยใช้บริการ Google Play Games ในอุปกรณ์ ระบบจะนำผู้ใช้ไปยังหน้าจอการตั้งค่าแบบครั้งเดียวโดยอัตโนมัติเพื่อสร้างบัญชี Play Games

ในเมธอด Start ของสคริปต์ ให้รับฟังผลลัพธ์ของการพยายามลงชื่อเข้าใช้โดยอัตโนมัติ ดึงข้อมูลสถานะการตรวจสอบสิทธิ์ และปิดใช้ฟีเจอร์ของบริการ Play Games หากผู้ใช้ไม่ได้ลงชื่อเข้าใช้

หากปลั๊กอิน Unity เป็นเวอร์ชันก่อน v11 คุณจะไม่สามารถใช้ฟีเจอร์การลงชื่อเข้าใช้ได้

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to sign-in. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

รหัสผลลัพธ์คือ Enum ที่คุณสามารถใช้เพื่อระบุสาเหตุของการลงชื่อเข้าใช้ที่ไม่สําเร็จ

หากต้องการใช้แพลตฟอร์มโซเชียลของ Unity คุณสามารถใช้โค้ดต่อไปนี้แทน

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

คุณจะเรียก API บริการเกมของ Google Play ไม่ได้จนกว่าจะได้รับค่าที่แสดงผลจาก Authenticate เราจึงขอแนะนำให้เกมแสดงหน้าจอสแตนด์บายจนกว่าจะมีการเรียกใช้การเรียกกลับเพื่อให้ผู้ใช้เริ่มเล่นเกมไม่ได้จนกว่าการตรวจสอบสิทธิ์จะเสร็จสมบูรณ์

ใช้ Play App Signing

Google จัดการและปกป้องคีย์ Signing ของแอปโดยใช้ Play App Signing คุณสามารถใช้ Play App Signing เพื่อรับรองไฟล์ Android App Bundle(AAB) สำหรับการเผยแพร่ที่เพิ่มประสิทธิภาพ Play App Signing จะจัดเก็บคีย์ App Signing ของคุณไว้ในโครงสร้างพื้นฐานที่ปลอดภัยของ Google หากต้องการใช้ Play App Signing คุณต้องสร้างและดาวน์โหลดไฟล์ AAB จาก Unity Hub ก่อน จากนั้นอัปโหลดไฟล์ AAB ไปยัง Play Console และสร้างรุ่นการทดสอบภายใน

สร้างไฟล์ AAB

หากต้องการสร้างไฟล์ AAB ใน Unity Hub ให้ทำตามขั้นตอนต่อไปนี้

  1. ใน Unity Hub ให้คลิกไฟล์ > การตั้งค่าการสร้าง
  2. เลือกสร้าง App Bundle ( Google Play)

    ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงการตั้งค่าบิลด์ Android

  3. คลิกสร้าง

  4. ดาวน์โหลดไฟล์ AAB จาก Unity Hub

สร้างรุ่นสำหรับการทดสอบภายใน

หากต้องการสร้างรุ่นสำหรับการทดสอบภายในและเพิ่มผู้ทดสอบใน Play Console ให้ทำตามขั้นตอนต่อไปนี้

  1. ใน Google Play Console ให้เลือกเกม
  2. ไปที่หน้าทดสอบและเผยแพร่ (การทดสอบ > การทดสอบภายใน)
  3. คลิกอัปโหลด แล้วเลือกไฟล์ AAB
  4. ป้อนชื่อในช่องรายละเอียดรุ่น
  5. คลิกถัดไป แล้วตรวจสอบรายละเอียดรุ่น
  6. คลิกบันทึกและเผยแพร่
  7. ในแท็บผู้ทดสอบ ให้คลิกสร้างรายชื่ออีเมลเพื่อเพิ่มผู้ทดสอบได้สูงสุด 100 คน

    ดูข้อมูลเพิ่มเติมได้ที่การทดสอบภายใน: จัดการผู้ทดสอบได้สูงสุด 100 คน

  8. ในURL หรืออีเมลสำหรับส่งความคิดเห็น ให้ป้อน URL หรืออีเมลสำหรับส่งความคิดเห็น

  9. คลิกบันทึก

ยืนยันข้อมูลเข้าสู่ระบบ App Signing

  1. ใน Google Play Console ให้เลือกเกม
  2. ไปที่หน้าทดสอบและเผยแพร่ (การตั้งค่า > การรับรองแอป)
  3. ยืนยันข้อมูลเข้าสู่ระบบ App Signing

สร้างและเรียกใช้โปรเจ็กต์

ตอนนี้คุณสร้างและเรียกใช้โปรเจ็กต์เกมได้แล้ว เมื่อเกมเริ่มขึ้น คุณจะเห็นความพยายามลงชื่อเข้าใช้โดยอัตโนมัติ

คุณต้องมีอุปกรณ์ Android จริงที่เปิดใช้การแก้ไขข้อบกพร่องผ่าน USB หรือโปรแกรมจำลองที่เรียกใช้โปรเจ็กต์ที่พัฒนาได้

เรียกดูรหัสการตรวจสอบสิทธิ์เซิร์ฟเวอร์

หากต้องการเข้าถึง Google API ในเว็บเซิร์ฟเวอร์แบ็กเอนด์ในนามของผู้เล่นปัจจุบัน คุณต้องรับรหัสการตรวจสอบสิทธิ์จากแอปพลิเคชันไคลเอ็นต์ แล้วส่งรหัสนี้ไปยังแอปพลิเคชันเว็บเซิร์ฟเวอร์ จากนั้นจะแลกรหัสเป็นโทเค็นการเข้าถึงเพื่อเรียกใช้ API ต่างๆ ได้ ดูข้อมูลเกี่ยวกับเวิร์กโฟลว์ได้ที่ฟีเจอร์ลงชื่อเข้าใช้ด้วย Google สำหรับเว็บ

วิธีรับรหัสการเข้าถึงฝั่งเซิร์ฟเวอร์

  1. กำหนดค่ารหัสไคลเอ็นต์เว็บของเว็บแอปพลิเคชันที่ลิงก์กับเกมใน Play Console

  2. โทรหา PlayGamesPlatform.Instance.RequestServerSideAccess เมื่อตรวจสอบสิทธิ์ผู้เล่นแล้วเพื่อรับรหัสการเข้าถึงฝั่งเซิร์ฟเวอร์

  3. ส่งรหัสนี้ไปยังแอปพลิเคชันเซิร์ฟเวอร์

  PlayGamesPlatform.Instance.RequestServerSideAccess(
    /* forceRefreshToken= */ false,
    code -> {
      // send code to server
    });

ตั้งค่าและเพิ่มฟีเจอร์