Funzionalità

Questa sezione fornisce guide all'implementazione dettagliate per i moduli principali supportati dall'SDK Google Play Giochi per PC per Unity:

Inizializzazione

L'SDK deve essere inizializzato prima di poter utilizzare altre funzionalità. Questa procedura stabilisce la connessione tra il gioco Unity e il runtime di Google Play Giochi su PC.

Spazio dei nomi: PlayPcSdkManaged.Initialization

Entry Point: GooglePlayInitialization

Implementazione

Devi recuperare il gestore di callback specifico di Unity da PlayPcSdkFactory e passarlo al metodo di inizializzazione. Per garantire la stabilità, ti consigliamo di racchiudere la logica di inizializzazione in un runner asincrono sicuro per gestire potenziali eccezioni ed evitare la doppia inizializzazione.

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

Riferimento per la gestione degli errori

L'SDK utilizza un oggetto Result per tutti i risultati API previsti. Devi controllare Result.Code per gestire scenari come errori di rete o annullamenti da parte degli utenti.

Nota:anche se le API SDK non generano eccezioni per gli errori logici, ti consigliamo comunque di racchiudere i metodi async di primo livello in un blocco try-catch. In questo modo, gli errori di runtime imprevisti (ad esempio riferimenti nulli nel tuo codice o errori di pianificazione delle attività) vengono registrati correttamente nella console Unity.