שילוב של Google Play Games PC SDK עם Unity

במדריך הזה תמצאו הוראות מפורטות לשילוב של Google Play Games PC SDK בפרויקט Unity.

שלב 1: מורידים את ה-SDK

מורידים את הגרסה האחרונה של חבילת Unity באמצעות קישור ההורדה.

הורדה: Play Games PC Unity SDK

שלב 2: ייבוא החבילה

ערכת ה-SDK מופצת כקובץ tar שתואם ל-Unity Package Manager‏ (UPM). מידע נוסף זמין במאמר בנושא התקנת חבילת UPM מקובץ tar מקומי

שלב 3: הגדרת Build Settings (הגדרות בנייה)

כדי לוודא שהספריות המקוריות נטענות בצורה תקינה, צריך להגדיר את הפרויקט כך שישתמש בIL2CPP scripting backend ויטרגט את הארכיטקטורה הנכונה.

  1. יוצרים פרופיל build עם Windows כפלטפורמה.

  2. בוחרים באפשרות הגדרות הפלטפורמה Windows. באפשרות ארכיטקטורה, משתמשים באפשרויות:

    • Intel 64-bit (מומלץ)
    • Intel 32-bit

    הערה: פלטפורמת Google Play Games במחשב פועלת בסביבת 64 ביט. אפשר ליצור את המשחק כגרסת 32 ביט (x86) או כגרסת 64 ביט (x64).

  3. מגדירים את Scripting Backend (קצה עורפי של סקריפטים) ל-IL2CPP. מידע נוסף זמין במאמר בנושא יצירת פרויקט באמצעות IL2CPP.

    • מגדירים את Api Compatibility Level (רמת התאימות של ה-API) ל-‎.NET Standard 2.0 (או ל-‎ .NET Framework).

שלב 4: יצירת מניפסט האפליקציה

כדי להשתמש ב-SDK במשחק, צריך לשייך את קובץ ההפעלה של המשחק לשם החבילה ב-Play שרשמתם ב-Play Console. כדי לעשות את זה, מוסיפים קובץ 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, קובץ המניפסט צריך להיות בכתובת Builds/manifest.xml.

שלב 5: אתחול ה-SDK

צריך להפעיל את ה-SDK לפני שמשתמשים בתכונות כלשהן, כמו חיוב או תקינות. משתמשים ב-PlayPcSdkFactory כדי ליצור את ה-handler לאתחול ולהתחיל את החיבור.

יוצרים סקריפט C# חדש, למשל 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!‎ (ה-SDK הופעל בהצלחה).