ফিচার

এই বিভাগটি ইউনিটির জন্য গুগল প্লে গেমস পিসি এসডিকে দ্বারা সমর্থিত মূল মডিউলগুলির জন্য বিস্তারিত বাস্তবায়ন নির্দেশিকা প্রদান করে:

আরম্ভকরণ

অন্য কোনও বৈশিষ্ট্য ব্যবহার করার চেষ্টা করার আগে SDK চালু করতে হবে। এই প্রক্রিয়াটি আপনার ইউনিটি গেম এবং পিসি রানটাইমে Google Play Games এর মধ্যে সংযোগ স্থাপন করে।

নেমস্পেস: PlayPcSdkManaged.Initialization

প্রবেশ বিন্দু: GooglePlayInitialization

বাস্তবায়ন

আপনাকে 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 সকল প্রত্যাশিত API ফলাফলের জন্য একটি Result অবজেক্ট ব্যবহার করে। নেটওয়ার্ক ত্রুটি বা ব্যবহারকারীর বাতিলকরণের মতো পরিস্থিতি পরিচালনা করতে আপনার Result.Code পরীক্ষা করা উচিত।

দ্রষ্টব্য: যদিও SDK API গুলি লজিক ত্রুটির জন্য ব্যতিক্রমগুলি দেয় না, তবুও আমরা আপনার শীর্ষ-স্তরের async পদ্ধতিগুলিকে একটি try-catch ব্লকে মোড়ানোর পরামর্শ দিই। এটি নিশ্চিত করে যে অপ্রত্যাশিত রানটাইম ত্রুটিগুলি (যেমন আপনার নিজস্ব কোডে নাল রেফারেন্স বা টাস্ক শিডিউলিং ব্যর্থতা) ইউনিটি কনসোলে সঠিকভাবে লগ করা হয়েছে।