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

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

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

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

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

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

  1. ดาวน์โหลดที่เก็บ GitHub

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

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

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

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

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

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

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

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

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

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

  4. ใน Unity Hub ให้คลิกFile > Build Settings > Player Settings > Other Settings

  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 ให้คลิก Window > Google Play Games > Setup > Android Setup

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

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

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

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

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

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

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

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

    • ในช่องรหัสบริการการเชื่อมต่อในบริเวณใกล้เคียง ให้ป้อน 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 โดยไม่ต้อง ลบล้างปลั๊กอินเริ่มต้นได้ โดยทำดังนี้

  1. ไม่ต้องโทร PlayGamesPlatform.Activate
  2. หาก Xyz เป็นชื่อเมธอดที่คุณต้องเรียกใช้ในคลาส Social อย่าเรียกใช้ Social.Xyz แต่ให้โทรหา PlayGamesPlatform.Instance.Xyz แทน
  3. อย่าใช้ Social.Active เมื่อโต้ตอบกับบริการเกมของ Google Play แต่ให้ใช้ 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 ในอุปกรณ์ ระบบจะนำผู้ใช้ไปยังหน้าจอการตั้งค่าแบบครั้งเดียวโดยอัตโนมัติเพื่อสร้างบัญชี Play Games

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

หากเวอร์ชันปลั๊กอิน 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).
      }
    }

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

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

  using GooglePlayGames;

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

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

ใช้ Play App Signing

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

สร้างไฟล์ AAB

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

  1. ใน Unity Hub ให้คลิก File > Build settings
  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. ไปที่หน้าทดสอบและเผยแพร่ (การตั้งค่า > App Signing)
  3. ยืนยันข้อมูลเข้าสู่ระบบ App Signing

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

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

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

ดึงรหัสการตรวจสอบสิทธิ์เซิร์ฟเวอร์

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

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

  1. เพิ่มรหัสไคลเอ็นต์เว็บสำหรับเกมของคุณใน Play Console
    1. ใน Google Play Console เลือกเกม
    2. ในหน้าการกำหนดค่า (เพิ่มผู้ใช้ > บริการเกมของ Play > การตั้งค่าและการจัดการ > การกำหนดค่า) ให้คลิกเพิ่มข้อมูลเข้าสู่ระบบ
    3. ในหน้าเพิ่มข้อมูลเข้าสู่ระบบ ให้เลือกเซิร์ฟเวอร์เกม
    4. สร้างรหัสไคลเอ็นต์ OAuth 2.0
    5. จดค่ารหัสไคลเอ็นต์ คุณจะต้องระบุค่านี้ในภายหลัง
  2. เพิ่มรหัสไคลเอ็นต์เว็บลงใน Unity Hub

    1. ใน Unity Hub ให้ตั้งค่า Google Play Games สำหรับ Unity และลงชื่อเข้าใช้
    2. ใน Unity Hub ให้ไปที่ Window > Google Play Games > Setup > Android Setup
    3. ป้อนค่ารหัสไคลเอ็นต์
  3. ดึงรหัสการตรวจสอบสิทธิ์ของเซิร์ฟเวอร์สำหรับขอบเขตเพิ่มเติม

    C#

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

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