ادغام SDK بازی‌های گوگل پلی برای کامپیوتر با یونیتی

این راهنما دستورالعمل‌های گام به گام برای ادغام SDK بازی‌های گوگل پلی برای کامپیوتر در پروژه یونیتی شما را ارائه می‌دهد.

مرحله ۱: دانلود SDK

آخرین نسخه Unity Package را با استفاده از لینک دانلود دانلود کنید.

دانلود: Play Games PC Unity SDK

مرحله ۲: وارد کردن بسته

SDK به صورت یک فایل tar سازگار با Unity Package Manager (UPM) توزیع شده است. برای اطلاعات بیشتر، به نصب یک بسته UPM از یک فایل tar محلی مراجعه کنید.

مرحله 3: پیکربندی تنظیمات ساخت

برای تأیید بارگذاری صحیح کتابخانه‌های بومی، باید پروژه خود را طوری پیکربندی کنید که از بک‌اند اسکریپت‌نویسی IL2CPP استفاده کند و معماری صحیح را هدف قرار دهد.

  1. یک پروفایل ساخت با ویندوز به عنوان پلتفرم ایجاد کنید.

  2. تنظیمات پلتفرم را روی ویندوز انتخاب کنید. برای معماری ، از گزینه‌ها استفاده کنید:

    • اینتل ۶۴ بیتی (توصیه می‌شود)
    • اینتل ۳۲ بیتی

    توجه: پلتفرم Google Play Games روی کامپیوتر شخصی روی محیط ۶۴ بیتی اجرا می‌شود. می‌توانید بازی خود را به صورت ۳۲ بیتی (x86) یا ۶۴ بیتی (x64) بسازید.

  3. بخش اسکریپت‌نویسی Backend را روی IL2CPP تنظیم کنید. برای اطلاعات بیشتر، به بخش «ساخت پروژه با IL2CPP» مراجعه کنید.

    • سطح سازگاری Api را روی .NET Standard 2.0 (یا .NET Framework) تنظیم کنید.

مرحله ۴: ایجاد مانیفست برنامه

قبل از اینکه بتوانید از SDK در بازی خود استفاده کنید، باید فایل اجرایی بازی خود را با نام بسته Play که در کنسول Play ادعا کرده‌اید، مرتبط کنید. این کار را با اضافه کردن یک فایل manifest.xml در همان دایرکتوری که فایل اجرایی بازی شما قرار دارد، انجام می‌دهید.

توجه: این یک مرحله دستی است که باید انجام شود.

  1. برای ساخت فایل اجرایی بازی خود، File > Build and Run را انتخاب کنید یا Ctrl+B را فشار دهید.
  2. یک ویرایشگر متن باز کنید و یک فایل جدید با نام manifest.xml ایجاد کنید.
  3. کد XML زیر را کپی کرده و در فایل قرار دهید:

    <?xml version="1.0" encoding="utf-8"?>
    <?Manifest version="1">
       <?Application>
         <?PackageName>com.example.package<?/PackageName>
       <?/Application>
    <?/Manifest>

  4. فایل را با نام manifest.xml ذخیره کنید.

  5. این فایل را به همان پوشه‌ای که فایل اجرایی بازی ساخته شده‌تان قرار دارد، منتقل کنید.

    مثال: اگر بازی شما در Builds/MyGame.exe قرار دارد، فایل manifest باید در Builds/manifest.xml باشد.

مرحله ۵: مقداردهی اولیه SDK

قبل از دسترسی به هرگونه ویژگی، مانند Billing یا Integrity، باید SDK را مقداردهی اولیه کنید. از PlayPcSdkFactory برای ایجاد کنترل‌کننده مقداردهی اولیه و شروع اتصال استفاده کنید.

یک اسکریپت سی‌شارپ جدید، مثلاً SdkInitialization.cs ، ایجاد کنید و کد زیر را به آن اضافه کنید:

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("Google Play PC 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("<color=green>Google Play PC SDK Initialized Successfully!</color>");
                // You can now create BillingClient or IntegrityClient instances
            }
            else
            {
                Debug.LogError($"<color=red>Initialization Failed!</color>");
                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);
        }
    }
}

این اسکریپت را در اولین صحنه خود به یک GameObject وصل کنید. وقتی بازی را اجرا می‌کنید، کنسول را برای پیام "SDK Initialized Successfully!" بررسی کنید.