Özellikler

Bu bölümde, Google Play Games PC SDK for Unity tarafından desteklenen temel modüllerle ilgili ayrıntılı uygulama kılavuzları verilmektedir:

Başlatma

Diğer özellikleri kullanmaya çalışmadan önce SDK'yı başlatmanız gerekir. Bu işlem, Unity oyununuz ile PC Üzerinde Google Play Games çalışma zamanı arasındaki bağlantıyı oluşturur.

Ad alanı: PlayPcSdkManaged.Initialization

Giriş noktası: GooglePlayInitialization

Uygulama

Unity'ye özgü geri çağırma işleyicisini PlayPcSdkFactory öğesinden alıp başlatma yöntemine iletmeniz gerekir. Kararlılığı sağlamak için başlatma mantığını olası istisnaları işlemek ve çift başlatmayı önlemek üzere güvenli bir asenkron çalıştırıcıya sarmalamanızı öneririz.

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);
        }
    }
}

Hata işleme referansı

SDK, beklenen tüm API sonuçları için bir Result nesnesi kullanır. Ağ hataları veya kullanıcı iptalleri gibi durumları ele almak için Result.Code kontrol etmeniz gerekir.

Not: SDK API'leri mantık hataları için istisna oluşturmasa da üst düzey async yöntemlerinizi try-catch bloğuna sarmalamanızı öneririz. Bu sayede, beklenmeyen çalışma zamanı hatalarının (ör. kendi kodunuzdaki boş referanslar veya görev planlama hataları) Unity konsoluna doğru şekilde kaydedilmesi sağlanır.