Fonctionnalités

Cette section fournit des guides d'implémentation détaillés pour les modules principaux compatibles avec le SDK Google Play Jeux pour PC pour Unity :

Initialisation

Le SDK doit être initialisé avant que vous tentiez d'utiliser d'autres fonctionnalités. Ce processus établit la connexion entre votre jeu Unity et le runtime Google Play Jeux sur PC.

Espace de noms : PlayPcSdkManaged.Initialization

Point d'entrée : GooglePlayInitialization

Mise en œuvre

Vous devez récupérer le gestionnaire de rappel spécifique à Unity à partir de PlayPcSdkFactory et le transmettre à la méthode d'initialisation. Pour assurer la stabilité, nous vous recommandons d'encapsuler la logique d'initialisation dans un exécuteur asynchrone sécurisé afin de gérer les exceptions potentielles et d'éviter la double initialisation.

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

Informations de référence sur la gestion des erreurs

Le SDK utilise un objet Result pour tous les résultats d'API attendus. Vous devez vérifier Result.Code pour gérer les scénarios tels que les erreurs réseau ou les annulations par l'utilisateur.

Remarque : Bien que les API du SDK lui-même ne génèrent pas d'exceptions pour les erreurs logiques, nous vous recommandons tout de même d'encapsuler vos méthodes async de niveau supérieur dans un bloc try-catch. Cela permet de s'assurer que les erreurs d'exécution inattendues (telles que les références nulles dans votre propre code ou les échecs de planification des tâches) sont correctement consignées dans la console Unity.