ویژگی‌ها

این بخش راهنماهای پیاده‌سازی دقیقی برای ماژول‌های اصلی پشتیبانی‌شده توسط Google Play Games PC SDK برای Unity ارائه می‌دهد:

مقداردهی اولیه

قبل از اینکه بخواهید از هر ویژگی دیگری استفاده کنید، باید SDK را مقداردهی اولیه کنید. این فرآیند، ارتباط بین بازی Unity شما و Google Play Games on PC runtime را برقرار می‌کند.

فضای نام: PlayPcSdkManaged.Initialization

نقطه شروع: GooglePlayInitialization

پیاده‌سازی

شما باید کنترل‌کننده‌ی فراخوانی مختص یونیتی را از PlayPcSdkFactory بازیابی کرده و آن را به متد مقداردهی اولیه ارسال کنید. برای اطمینان از پایداری، توصیه می‌کنیم منطق مقداردهی اولیه را در یک اجراکننده‌ی async امن قرار دهید تا خطاهای احتمالی را مدیریت کرده و از مقداردهی اولیه‌ی دوگانه جلوگیری کند.

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

مرجع مدیریت خطا

SDK از یک شیء Result برای تمام نتایج API مورد انتظار استفاده می‌کند. شما باید Result.Code برای مدیریت سناریوهایی مانند خطاهای شبکه یا لغو کاربر بررسی کنید.

نکته: اگرچه خود APIهای SDK برای خطاهای منطقی استثنا ایجاد نمی‌کنند، اما ما همچنان توصیه می‌کنیم که متدهای async سطح بالای خود را در یک بلوک try-catch قرار دهید. این کار تضمین می‌کند که خطاهای غیرمنتظره زمان اجرا (مانند ارجاع‌های null در کد خودتان یا خرابی‌های زمان‌بندی وظایف) به درستی در کنسول Unity ثبت شوند.