Funktionen

Dieser Abschnitt enthält detaillierte Implementierungsanleitungen für die Kernmodule, die vom Google Play Games PC SDK für Unity unterstützt werden:

Initialisierung

Das SDK muss initialisiert werden, bevor Sie andere Funktionen verwenden können. Dadurch wird die Verbindung zwischen Ihrem Unity-Spiel und der Google Play Games auf dem PC-Laufzeitumgebung hergestellt.

Namespace:PlayPcSdkManaged.Initialization

Einstiegspunkt:GooglePlayInitialization

Implementierung

Sie müssen den Unity-spezifischen Callback-Handler aus PlayPcSdkFactory abrufen und an die Initialisierungsmethode übergeben. Um die Stabilität zu gewährleisten, empfehlen wir, die Initialisierungslogik in einen sicheren asynchronen Runner einzuschließen, um potenzielle Ausnahmen zu verarbeiten und eine doppelte Initialisierung zu verhindern.

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);
        }
    }
}

Referenz zur Fehlerbehandlung

Das SDK verwendet ein Result-Objekt für alle erwarteten API-Ergebnisse. Sie sollten Result.Code prüfen, um Szenarien wie Netzwerkfehler oder Nutzerkündigungen zu verarbeiten.

Hinweis:Die SDK-APIs selbst lösen zwar keine Ausnahmen für Logikfehler aus, wir empfehlen jedoch, Ihre async-Methoden der obersten Ebene in einen try-catch-Block einzuschließen. So wird sichergestellt, dass unerwartete Laufzeitfehler (z. B. Nullreferenzen im eigenen Code oder Fehler bei der Aufgabenplanung) korrekt in der Unity-Konsole protokolliert werden.