ফিচার

এই বিভাগে Google Play Games PC SDK for Unity দ্বারা সমর্থিত কোর মডিউলগুলির জন্য বিস্তারিত বাস্তবায়ন নির্দেশিকা প্রদান করা হয়েছে:

প্রারম্ভিকীকরণ

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

নেমস্পেস: 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);
        }
    }
}

ত্রুটি পরিচালনা সংক্রান্ত রেফারেন্স

এসডিকে সমস্ত প্রত্যাশিত এপিআই ফলাফলের জন্য একটি Result অবজেক্ট ব্যবহার করে। নেটওয়ার্ক ত্রুটি বা ব্যবহারকারীর বাতিলের মতো পরিস্থিতি সামাল দিতে আপনার Result.Code পরীক্ষা করা উচিত।

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