ผสานรวม Google Play Games PC SDK กับ Unity

คู่มือนี้แสดงวิธีการทีละขั้นตอนในการผสานรวม Google Play Games PC SDK เข้ากับโปรเจ็กต์ Unity

ขั้นตอนที่ 1: ดาวน์โหลด SDK

ดาวน์โหลด Unity Package เวอร์ชันล่าสุดโดยใช้ลิงก์ดาวน์โหลด

ดาวน์โหลด: Play Games PC Unity SDK

ขั้นตอนที่ 2: นำเข้าแพ็กเกจ

SDK จะเผยแพร่เป็นไฟล์ tar ที่เข้ากันได้กับ Unity Package Manager (UPM) ดูข้อมูลเพิ่มเติมได้ที่ หัวข้อ ติดตั้งแพ็กเกจ UPM จากไฟล์ tar ในเครื่อง

ขั้นตอนที่ 3: กำหนดค่าการตั้งค่าบิลด์

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

  1. สร้างโปรไฟล์บิลด์ โดยใช้ Windows เป็นแพลตฟอร์ม

  2. เลือกการตั้งค่าแพลตฟอร์ม เป็น Windows สำหรับสถาปัตยกรรม ให้ใช้ตัวเลือกต่อไปนี้

    • Intel แบบ 64 บิต (แนะนำ)
    • Intel แบบ 32 บิต

    หมายเหตุ: แพลตฟอร์ม Google Play Games บน PC ทำงานในสภาพแวดล้อมแบบ 64 บิต คุณสามารถสร้างเกมเป็นแบบ 32 บิต (x86) หรือ 64 บิต (x64)

  3. ตั้งค่า Scripting Backend เป็น IL2CPP ดูข้อมูลเพิ่มเติมได้ที่หัวข้อการสร้างโปรเจ็กต์ด้วย IL2CPP

    • ตั้งค่า Api Compatibility Level เป็น .NET Standard 2.0 (หรือ .NET Framework)

ขั้นตอนที่ 4: สร้างไฟล์ Manifest ของแอปพลิเคชัน

คุณต้องเชื่อมโยงไฟล์ปฏิบัติการของเกมกับชื่อแพ็กเกจ Play ที่อ้างสิทธิ์ไว้ใน Play Console ก่อนจึงจะใช้ SDK ในเกมได้ โดยทำได้ด้วยการเพิ่มไฟล์ manifest.xml ในไดเรกทอรีเดียวกับไฟล์ปฏิบัติการของเกม

หมายเหตุ: ขั้นตอนนี้ต้องทำด้วยตนเอง

  1. หากต้องการสร้างไฟล์ปฏิบัติการของเกม ให้เลือกไฟล์ > สร้างและเรียกใช้ หรือคลิก Ctrl+B
  2. เปิดโปรแกรมแก้ไขข้อความและสร้างไฟล์ใหม่ชื่อ manifest.xml
  3. คัดลอกและวางโค้ด XML ต่อไปนี้ลงในไฟล์

    <?xml version="1.0" encoding="utf-8"?>
    <?Manifest version="1">
       <?Application>
         <?PackageName>com.example.package<?/PackageName>
       <?/Application>
    <?/Manifest>

  4. บันทึกไฟล์เป็น manifest.xml

  5. ย้ายไฟล์นี้ไปยังโฟลเดอร์เดียวกับไฟล์ปฏิบัติการของเกมที่สร้างขึ้น

    ตัวอย่าง: หากเกมอยู่ที่ Builds/MyGame.exe ไฟล์ Manifest ต้องอยู่ที่ Builds/manifest.xml

หมายเหตุ: หากต้องการใช้ PC SDK ขณะพัฒนาใน Unity Editor โดยไม่ต้องลงชื่อดิจิทัลไฟล์ปฏิบัติการของเกมหรือเปิดใช้จาก Google Play Games ดูขั้นตอนการกำหนดค่าไฟล์ Manifest เพิ่มเติมได้ที่ คู่มือการตั้งค่าโหมดนักพัฒนาแอป

ขั้นตอนที่ 5: เริ่มต้น SDK

คุณต้องเริ่มต้น SDK ก่อนจึงจะเข้าถึงฟีเจอร์ต่างๆ ได้ เช่น การเรียกเก็บเงินหรือการตรวจสอบความสมบูรณ์ ใช้ PlayPcSdkFactory เพื่อสร้างตัวแฮนเดิลการเริ่มต้นและเริ่มการเชื่อมต่อ

สร้างสคริปต์ C# ใหม่ เช่น SdkInitialization.cs แล้วเพิ่มโค้ดต่อไปนี้

using UnityEngine;
using System;
using System.Threading.Tasks;
// Import the SDK namespaces
using PlayPcSdkManaged.Initialization;
using PlayPcSdkManaged.Unity;

public class GooglePlayPCSDKInit : MonoBehaviour
{
    // Prevent double-initialization if this script is reloaded
    private static bool _isInitialized = false;

    private void Start()
    {
        // Use the "Safe Runner" pattern to fire the async method
        _ = InitializeSdkAsync();
    }

    private async Task InitializeSdkAsync()
    {
        if (_isInitialized)
        {
            Debug.LogWarning("Google Play PC SDK is already initialized. Skipping.");
            return;
        }

        try
        {
            Debug.Log("Initializing Google Play PC SDK...");

            // 1. Get the Unity-specific initialization handler from the factory
            var initHandler = PlayPcSdkFactory.InitializationHandler;

            // 2. Call InitializeAsync to start the connection
            var result = await GooglePlayInitialization.InitializeAsync(initHandler);

            // 3. Check the result
            if (result.IsOk)
            {
                _isInitialized = true;
                Debug.Log("<color=green>Google Play PC SDK Initialized Successfully!</color>");
                // You can now create BillingClient or IntegrityClient instances
            }
            else
            {
                Debug.LogError($"<color=red>Initialization Failed!</color>");
                Debug.LogError($"Error Code: {result.Code}");
                Debug.LogError($"Message: {result.ErrorMessage}");
            }
        }
        catch (Exception ex)
        {
            // Catch unexpected crashes or task failures
            Debug.LogError($"Exception during initialization: {ex.Message}");
            Debug.LogException(ex);
        }
    }
}

แนบสคริปต์นี้กับ GameObject ในฉากแรก เมื่อเรียกใช้เกม ให้ตรวจสอบข้อความ "SDK Initialized Successfully!" ในคอนโซล