เอกสารนี้จะแนะนำขั้นตอนการตั้งค่าโปรเจ็กต์ Unity เพื่อใช้ปลั๊กอิน Google Play Games สำหรับ Unity คุณจะได้เรียนรู้วิธีติดตั้งปลั๊กอินและกำหนดค่าโปรเจ็กต์ Unity รวมถึงวิธีตรวจสอบบริการการตรวจสอบสิทธิ์
ก่อนเริ่มต้น
ตรวจสอบข้อกำหนดของซอฟต์แวร์ ตั้งค่า Play Console และติดตั้ง Unity Editor
ตั้งค่า Play Console สำหรับเกม
ติดตั้ง Unity Editor และ สร้างเกมใน Unity.
การติดตั้งปลั๊กอิน
หากต้องการดาวน์โหลดและติดตั้งปลั๊กอิน Google Play Games สำหรับ Unity ให้ทำตามขั้นตอนต่อไปนี้ใน Unity Editor
ดาวน์โหลดที่เก็บ GitHub
ค้นหาไฟล์
unitypackageในไดเรกทอรีcurrent-buildไฟล์นี้แสดงถึงปลั๊กอิน เช่น ควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
ตั้งค่าโปรเจ็กต์ Unity
หากต้องการตั้งค่าโปรเจ็กต์ Unity ในการตั้งค่าผู้เล่น ให้ทำตามขั้นตอนต่อไปนี้
เปิดโปรเจ็กต์เกม
ใน Unity Editor ให้คลิกเนื้อหา > นำเข้าแพ็กเกจ > แพ็กเกจที่กำหนดเอง เพื่อนำเข้าไฟล์
unitypackageไปยังเนื้อหาของโปรเจ็กต์ตรวจสอบว่าแพลตฟอร์มบิลด์ปัจจุบันตั้งค่าเป็น Android
คลิกไฟล์ > การตั้งค่าบิลด์ ในเมนูหลัก
เลือก Android แล้วคลิก Switch Platform
ควรมีรายการเมนูใหม่ในส่วนหน้าต่าง > Google Play Games หากไม่มี ให้รีเฟรชเนื้อหาโดยคลิกเนื้อหา > รีเฟรช แล้วลองตั้งค่าแพลตฟอร์มบิลด์อีกครั้ง
ใน Unity Editor ให้คลิกไฟล์ > การตั้งค่าบิลด์ > การตั้งค่าผู้เล่น > การตั้งค่าอื่นๆ
เลือกเวอร์ชันในช่องระดับ API เป้าหมาย
ป้อน
IL2CPPในช่องแบ็กเอนด์การเขียนสคริปต์เลือกค่าในช่องสถาปัตยกรรมเป้าหมาย
จดชื่อแพ็กเกจ package_name ไว้ คุณสามารถใช้ข้อมูลนี้ ได้ในภายหลัง
สร้างคีย์สโตร์ใหม่
คุณต้องมีคีย์เพื่อตรวจสอบข้อมูลเข้าสู่ระบบ โดยทำตามขั้นตอนต่อไปนี้
- ใน Unity Editor ให้คลิกไฟล์ > การตั้งค่าบิลด์ > การตั้งค่าผู้เล่น
- ในส่วนการตั้งค่าการเผยแพร่ ให้คลิกตัวจัดการคีย์สโตร์
- ในหน้าต่างตัวจัดการคีย์สโตร์ ให้คลิกคีย์สโตร์ > สร้างใหม่ > ทุกที่
- เลือกโฟลเดอร์และตั้งชื่อคีย์สโตร์
- ป้อนรหัสผ่านและยืนยันในช่องรหัสผ่าน
- คลิกเพิ่มคีย์
จดชื่อโฟลเดอร์ไว้ คุณสามารถใช้ชื่อนี้เพื่อ สร้างข้อมูลเข้าสู่ระบบใน Google Cloud
คัดลอกทรัพยากร Android จาก Play Console
รางวัลพิเศษ ลีดเดอร์บอร์ด และเหตุการณ์แต่ละรายการที่คุณสร้างใน Play Console จะมีทรัพยากร Android ที่คุณใช้เมื่อคุณ ตั้งค่าโปรเจ็กต์ Unity
หากต้องการรับทรัพยากร Android สำหรับเกม ให้ทำตามขั้นตอนต่อไปนี้
ใน Google Play Console, เปิดเกม
ในหน้าบริการเกมของ Play - การกำหนดค่า (ขยายการมองเห็น > บริการเกมของ Play > การตั้งค่าและการ จัดการ > การกำหนดค่า) ให้คลิกรับทรัพยากร
ในหน้าต่างทรัพยากร ให้คลิกแท็บ Android(XML)
เลือกและคัดลอกเนื้อหาทรัพยากร Android (
AndroidManifest.xml)
เพิ่มทรัพยากร Android ลงในโปรเจ็กต์ Unity
เพิ่มทรัพยากร Android ต่อไปนี้ลงในโปรเจ็กต์ Unity
ใน Unity Editor ให้คลิกหน้าต่าง > Google Play Games > การตั้งค่า > การตั้งค่า Android
- ป้อนชื่อโฟลเดอร์สำหรับไฟล์ค่าคงที่ในช่องไดเรกทอรีที่จะบันทึกค่าคงที่
ป้อนชื่อคลาส C# ที่จะสร้าง รวมถึงเนมสเปซ ในช่องชื่อคลาสค่าคงที่
ตัวอย่างเช่น หากคลาส C# คือ
id.csและอยู่ในส่วนเนื้อหา > myproject > สคริปต์ > id.cs ชื่อคลาสค่าคงที่อาจเป็นmyproject.scripts.idในช่องการกำหนดทรัพยากร ให้วางข้อมูลทรัพยากร Android (ไฟล์
AndroidManifest.xml) ที่คุณคัดลอกจาก Google Play Consoleไม่บังคับ: ป้อนรหัสไคลเอ็นต์ของเว็บแอปที่ลิงก์ไว้ในช่องรหัสไคลเอ็นต์
หากต้องการรับรหัสไคลเอ็นต์สำหรับเกมจาก Google Cloud โปรดดู การสร้างรหัสไคลเอ็นต์
คุณต้องดำเนินการนี้ก็ต่อเมื่อมีแบ็กเอนด์ที่อิงตามเว็บ สำหรับเกมและต้องใช้รหัสการให้สิทธิ์เซิร์ฟเวอร์เพื่อแลกเป็นโทเค็นเพื่อการเข้าถึง โดยเซิร์ฟเเวอร์แบ็กเอนด์ หรือหากคุณต้องใช้โทเค็นรหัสสำหรับผู้เล่นเพื่อทำการเรียก API อื่นๆ ที่ไม่ใช่ของเกม
คลิก Setup ซึ่งจะกำหนดค่าเกมด้วยรหัสไคลเอ็นต์และสร้างคลาส C# ที่มีค่าคงที่สำหรับทรัพยากร Android แต่ละรายการ
ใน Unity Editor ให้คลิกหน้าต่าง > Google Play Games > การตั้งค่า > การตั้งค่าการเชื่อมต่อใกล้เคียง
ป้อน package_nameในช่องรหัสบริการการเชื่อมต่อใกล้เคียง
ใช้ package_name เดียวกับที่ใช้ใน การตั้งค่าโปรเจ็กต์ Unity
คลิก Setup
เลือกแพลตฟอร์มโซเชียล
ปลั๊กอินบริการเกมของ Google Play ใช้การผสานรวมอินเทอร์เฟซ โซเชียลของ Unity เพื่อให้เข้ากันได้กับเกมที่ใช้การผสานรวมอินเทอร์เฟซดังกล่าวกับแพลตฟอร์มอื่นๆ อยู่แล้ว อย่างไรก็ตาม ฟีเจอร์บางอย่างมีเฉพาะใน Play Games และมีให้เป็นส่วนขยายของอินเทอร์เฟซโซเชียลมาตรฐานที่ Unity ให้บริการ
คุณเข้าถึงการเรียก API มาตรฐานได้ผ่านออบเจ็กต์ Social.Active ซึ่งเป็นการอ้างอิงถึงอินเทอร์เฟซ ISocialPlatform ส่วนขยายบริการเกมของ Google Play ที่ไม่ใช่มาตรฐานจะเข้าถึงได้โดยการแคสต์ออบเจ็กต์ Social.Active ไปยังคลาส PlayGamesPlatform ซึ่งจะมีเมธอดเพิ่มเติมให้ใช้งาน
ใช้ปลั๊กอินโดยไม่ลบล้างแพลตฟอร์มโซเชียลเริ่มต้น
เมื่อคุณเรียก
PlayGamesPlatform.Activate,
บริการเกมของ Google Play จะกลายเป็นการใช้งานแพลตฟอร์มโซเชียลเริ่มต้น ซึ่งหมายความว่า
ปลั๊กอินบริการเกมของ Google Play จะทำการเรียกแบบคงที่ไปยังเมธอดใน Social และ
Social.Active ซึ่งเป็นลักษณะการทำงานที่คาดไว้สำหรับเกมส่วนใหญ่ที่ใช้ปลั๊กอิน
อย่างไรก็ตาม หากคุณต้องการให้การใช้งานเริ่มต้นเข้าถึงได้ (เช่น เพื่อใช้ส่งรางวัลพิเศษและลีดเดอร์บอร์ดไปยังแพลตฟอร์มโซเชียลอื่น) ด้วยเหตุผลบางประการ คุณสามารถใช้ปลั๊กอินบริการเกมของ Google Play โดยไม่ลบล้างปลั๊กอินเริ่มต้นได้ โดยทำดังนี้
- เรียกเมธอด
PlayGamesPlatform.Activate - หาก
Xyzเป็นชื่อเมธอดที่คุณเรียกในคลาสSocialอย่า เรียกSocial.Xyzแต่ให้เรียกPlayGamesPlatform.Instance.Xyzแทน - ใช้พร็อพเพอร์ตี้
PlayGamesPlatform.InstanceแทนSocial.Activeเมื่อโต้ตอบกับบริการเกมของ Google Play
ด้วยวิธีนี้ คุณจะส่งคะแนนและรางวัลพิเศษไปยังแพลตฟอร์มโซเชียล 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 authenticate. Clicking it should call
// PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
}
}
รหัสผลลัพธ์เป็น Enum ที่คุณใช้ระบุเหตุผลที่ทำให้การตรวจสอบสิทธิ์ล้มเหลวได้
หากต้องการใช้แพลตฟอร์มโซเชียลของ Unity คุณสามารถใช้โค้ดต่อไปนี้แทนได้
using GooglePlayGames;
public void Start() {
PlayGamesPlatform.Activate();
Social.localUser.Authenticate(ProcessAuthentication);
}
คุณจะเรียกใช้บริการเกมของ Google Play API ไม่ได้จนกว่าจะได้รับค่าที่แสดงผลสำเร็จจาก Authenticate ดังนั้น เราขอแนะนำให้เกมแสดงหน้าจอสแตนด์บายจนกว่าจะมีการเรียกกลับ เพื่อให้แน่ใจว่าผู้ใช้จะเริ่มเล่นเกมไม่ได้จนกว่าการตรวจสอบสิทธิ์จะเสร็จสมบูรณ์
ป้องกันการสร้างโปรไฟล์ที่ทริกเกอร์โดยอัตโนมัติ
คุณปิดใช้ข้อความแจ้งการสร้างโปรไฟล์ที่ทริกเกอร์โดยอัตโนมัติได้ผ่านไฟล์ Manifest ซึ่งจะช่วยให้ผู้ใช้ที่ไม่มีโปรไฟล์บริการเกมของ Play โหลดเกมต่อไปได้โดยไม่ต้องได้รับข้อความแจ้งให้สร้างโปรไฟล์บริการเกมของ Play ดูข้อมูลเพิ่มเติมได้ที่ตัวเลือกการสร้างโปรไฟล์
หากต้องการใช้ฟีเจอร์นี้ โปรดตรวจสอบว่าตรงตามเงื่อนไขต่อไปนี้
- อุปกรณ์ไม่มีโปรไฟล์บริการเกมของ Play ในบัญชี Google ที่ลงชื่อเข้าใช้
- เกมของคุณผสานรวมกับ บริการเกมของ Play
ปลั๊กอิน Unity
2.1.0ขึ้นไป
ในไฟล์
AndroidManifest.xmlให้เพิ่มแท็กcom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONในองค์ประกอบ<meta-data>และแอตทริบิวต์ลงในองค์ประกอบ<application>ดังนี้<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>
การตั้งค่าแฟล็กนี้เป็น "จริง" จะแจ้งให้บริการเกมของ Play ทราบว่าเกมของคุณจะจัดการกระบวนการสร้างโปรไฟล์ ดังนั้น บริการเกมของ Play จะไม่แสดงอินเทอร์เฟซผู้ใช้การสร้างโปรไฟล์โดยอัตโนมัติสำหรับผู้ใช้ในอุปกรณ์ที่ไม่มีโปรไฟล์บริการเกมของ Play อยู่
หากต้องการจัดการกรณีที่ผู้ใช้ไม่ได้รับการตรวจสอบสิทธิ์เนื่องจากไม่มี โปรไฟล์บริการเกมของ Play คุณสามารถใช้ PlayGamesPlatform.Instance.IsAuthenticated() เมธอดนี้จะแสดงผล
falseเนื่องจากสร้างโปรไฟล์ไม่สำเร็จ หากต้องการแก้ไขปัญหานี้ ให้เริ่มกระบวนการสร้างโปรไฟล์ โดยเรียก PlayGamesPlatform.Instance.ManuallyAuthenticate()if (!PlayGamesPlatform.Instance.IsAuthenticated()) { // The user is unauthenticated, likely due to a missing Play Games profile. // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger // the profile creation UI. PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => { // ... }); }หลังจากเพิ่มแท็กการระงับแล้ว ให้ใช้หน้าต่าง
logcatเพื่อยืนยันการเพิ่ม เอาต์พุตlogcatจะมีข้อความคล้ายกับข้อความต่อไปนี้ "Game opted out of automatic profile creation prompt (using manifest)"
ใช้ 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 Editor ก่อน จากนั้นจึงอัปโหลดไฟล์ AAB ไปยัง Play Console และสร้างรุ่นสำหรับการทดสอบภายใน
สร้างไฟล์ AAB
หากต้องการสร้างไฟล์ AAB ใน Unity Editor ให้ทำตามขั้นตอนต่อไปนี้
- ใน Unity Editor ให้คลิกไฟล์ > การตั้งค่าบิลด์
เลือก Build App Bundle ( Google Play )
ดูข้อมูลเพิ่มเติมได้ที่ ข้อมูลอ้างอิงการตั้งค่าบิลด์ Android
คลิกบิลด์
ดาวน์โหลดไฟล์ AAB จาก Unity Editor
สร้างรุ่นสำหรับการทดสอบภายใน
หากต้องการสร้างรุ่นสำหรับการทดสอบภายในและเพิ่มผู้ทดสอบใน Play Console ให้ทำตามขั้นตอนต่อไปนี้
- ใน Google Play Console เลือกเกม
- ไปที่หน้าทดสอบและเผยแพร่ (การทดสอบ > การทดสอบภายใน)
- คลิกอัปโหลด แล้วเลือกไฟล์ AAB
- ป้อนชื่อในช่องรายละเอียดรุ่น
- คลิกถัดไป แล้วตรวจสอบรายละเอียดรุ่น
- คลิกบันทึกและเผยแพร่
ในแท็บผู้ทดสอบ ให้คลิกสร้างรายชื่ออีเมล เพื่อเพิ่มผู้ทดสอบได้สูงสุด 100 ราย
ดูข้อมูลเพิ่มเติมได้ที่ ดู การทดสอบภายใน: จัดการผู้ทดสอบได้สูงสุด 100 ราย
ในช่อง**URL หรืออีเมลสำหรับแสดงความคิดเห็น** ให้ป้อน URL หรืออีเมล สำหรับแสดงความคิดเห็น
คลิกบันทึก
ยืนยันข้อมูลเข้าสู่ระบบ App Signing
- ใน Google Play Console เลือกเกม
- ไปที่หน้าทดสอบและเผยแพร่ (การตั้งค่า > App Signing)
- ยืนยันข้อมูลเข้าสู่ระบบ App Signing
สร้างและเรียกใช้โปรเจ็กต์
คุณสามารถสร้างและเรียกใช้โปรเจ็กต์เกมได้ในตอนนี้ เมื่อเกมเริ่มขึ้น คุณจะเห็นการพยายามตรวจสอบสิทธิ์อัตโนมัติ
คุณต้องมีอุปกรณ์จริงที่ใช้พลังงานจาก Android ซึ่งเปิดใช้การแก้ไขข้อบกพร่อง USB หรือโปรแกรมจำลองที่เรียกใช้โปรเจ็กต์ที่พัฒนาขึ้นได้
ดึงรหัสการให้สิทธิ์เซิร์ฟเวอร์
หากต้องการเข้าถึง Google API ในเว็บเซิร์ฟเวอร์แบ็กเอนด์ในนามของผู้เล่นปัจจุบัน คุณต้องรับรหัสการให้สิทธิ์จากแอปพลิเคชันไคลเอ็นต์และส่งรหัสนี้ไปยังแอปพลิเคชันเว็บเซิร์ฟเวอร์ จากนั้นคุณจะแลกรหัสเป็นโทเค็นเพื่อการเข้าถึงเพื่อทำการเรียก API ต่างๆ ได้ ดูข้อมูลเกี่ยวกับ เวิร์กโฟลว์ได้ที่ ลงชื่อเข้าใช้ด้วย Google สำหรับเว็บ
วิธีรับรหัสการเข้าถึงฝั่งเซิร์ฟเวอร์
- เพิ่มรหัสไคลเอ็นต์เว็บสำหรับเกมใน Play Console
- ใน Google Play Console เลือกเกม
- ในหน้าการกำหนดค่า (ขยายการมองเห็น > บริการเกมของ Play > การตั้งค่าและการจัดการ > การกำหนดค่า) ให้คลิกเพิ่มข้อมูลเข้าสู่ระบบ
- ในหน้าเพิ่มข้อมูลเข้าสู่ระบบ ให้เลือกเซิร์ฟเวอร์เกม
- สร้างรหัสไคลเอ็นต์ OAuth 2.0
- จดค่ารหัสไคลเอ็นต์ไว้ คุณจะต้องระบุค่านี้ในภายหลัง
เพิ่มรหัสไคลเอ็นต์เว็บลงใน Unity Hub
- ใน Unity Hub ให้ ตั้งค่า Google Play Games สำหรับ Unity และตรวจสอบสิทธิ์
- ใน Unity Hub ให้ไปที่หน้าต่าง > Google Play Games > การตั้งค่า > การตั้งค่า Android
- ป้อนค่ารหัสไคลเอ็นต์
ดึงรหัสการให้สิทธิ์เซิร์ฟเวอร์สำหรับขอบเขตเพิ่มเติม
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... });
ตั้งค่าและเพิ่มฟีเจอร์
เปิดใช้ฟีเจอร์บริการเกมของ Play
เพิ่มฟีเจอร์ลงในเกมโดยใช้ Play Games Services API ดังนี้
Recall API สำหรับ Unity (รองรับเฉพาะปลั๊กอิน Unity เวอร์ชัน v11 ขึ้นไป)