الميزات

يوفّر هذا القسم أدلة تنفيذ مفصّلة للوحدات الأساسية التي تتيحها حزمة تطوير البرامج (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.