الميزات

يقدّم هذا القسم أدلة تفصيلية حول استخدام الوحدات الأساسية المتوافقة مع حزمة تطوير البرامج (SDK) في "ألعاب Google Play على الكمبيوتر" لنظام Unity:

الإعداد

يجب إعداد حزمة SDK قبل محاولة استخدام أي ميزات أخرى. تُنشئ هذه العملية اتصالاً بين لعبة Unity وبيئة التشغيل في "ألعاب Google Play على الكمبيوتر".

مساحة الاسم: PlayPcSdkManaged.Initialization

نقطة الدخول: GooglePlayInitialization

التنفيذ

يجب استرداد معالج رد الاتصال الخاص بـ Unity من PlayPcSdkFactory وتمريره إلى طريقة الإعداد. لضمان الاستقرار، ننصحك بتضمين منطق التهيئة في أداة تشغيل غير متزامنة آمنة للتعامل مع الاستثناءات المحتملة ومنع التهيئة المزدوجة.

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 لجميع النتائج المتوقّعة لواجهة برمجة التطبيقات. عليك التحقّق من Result.Code للتعامل مع سيناريوهات مثل أخطاء الشبكة أو عمليات الإلغاء من قِبل المستخدم.

ملاحظة: على الرغم من أنّ واجهات برمجة التطبيقات في حزمة تطوير البرامج (SDK) لا تعرض استثناءات لأخطاء منطقية، ننصحك مع ذلك بتضمين طرق async ذات المستوى الأعلى في كتلة try-catch. ويضمن ذلك تسجيل أخطاء وقت التشغيل غير المتوقّعة (مثل المراجع الفارغة في الرمز الخاص بك أو حالات تعذُّر جدولة المهام) بشكل صحيح في وحدة تحكّم Unity.