Fitur

Bagian ini memberikan panduan penerapan mendetail untuk modul inti yang didukung oleh Google Play Game PC SDK untuk Unity:

Inisialisasi

SDK harus diinisialisasi sebelum Anda mencoba menggunakan fitur lainnya. Proses ini akan membuat koneksi antara game Unity Anda dan runtime Google Play Game di PC.

Namespace: PlayPcSdkManaged.Initialization

Entry Point: GooglePlayInitialization

Penerapan

Anda harus mengambil handler callback khusus Unity dari PlayPcSdkFactory dan meneruskannya ke metode inisialisasi. Untuk memastikan stabilitas, sebaiknya bungkus logika inisialisasi dalam peluncur asinkron yang aman untuk menangani potensi pengecualian dan mencegah inisialisasi ganda.

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("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("SDK Initialized Successfully!");
                // You can now create BillingClient or IntegrityClient instances
            }
            else
            {
                Debug.LogError($"Initialization Failed!");
                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);
        }
    }
}

Referensi penanganan error

SDK menggunakan objek Result untuk semua hasil API yang diharapkan. Anda harus memeriksa Result.Code untuk menangani skenario seperti error jaringan atau pembatalan pengguna.

Catatan: Meskipun API SDK itu sendiri tidak memunculkan pengecualian untuk error logika, sebaiknya Anda tetap membungkus metode async tingkat teratas dalam blok try-catch. Hal ini memastikan bahwa error runtime yang tidak terduga (seperti referensi null dalam kode Anda sendiri atau kegagalan penjadwalan tugas) dicatat dengan benar di konsol Unity.