Accueil Github ↗
v1.0

Exemple de code — ChambreManager

Code source annoté de ChambreManager.cs — exemple de référence pour les pages compagnons.

← Retour aux composants

ChambreManager.cs

Gestionnaire principal de la chambre personnalisée d’un élève. Hérite de AbstractSingleton<T> — une seule instance en mémoire, accessible globalement.

using UnityEngine;
using System;

/// <summary>
/// Gère le chargement et l'affichage de la chambre personnalisée d'un élève.
/// </summary>
public class ChambreManager : AbstractSingleton<ChambreManager>
{
    [Header("Références scène")]
    [SerializeField] private GameObject chambrePrefab;
    [SerializeField] private Transform  chambreParent;

    private string _currentEleveId;

    // ── Événements ────────────────────────────────────────────
    public static event Action<ChambreData> OnChambreChargee;
    public static event Action             OnChambreErreur;

    // ── API publique ───────────────────────────────────────────

    /// <summary>Charge et affiche la chambre de l'élève spécifié.</summary>
    public void ChargerChambre(string idEleve)
    {
        _currentEleveId = idEleve;
        PlayFabManager.Instance.GetChambreData(idEleve, OnDataLoaded, OnDataErreur);
    }

    public void ViderChambre()
    {
        foreach (Transform child in chambreParent)
            Destroy(child.gameObject);
    }

    // ── Callbacks privés ──────────────────────────────────────

    private void OnDataLoaded(ChambreData data)
    {
        ViderChambre();
        var instance = Instantiate(chambrePrefab, chambreParent);
        instance.GetComponent<ChambreView>().Initialiser(data);
        OnChambreChargee?.Invoke(data);
    }

    private void OnDataErreur(string message)
    {
        Debug.LogError($"[ChambreManager] Erreur chargement élève {_currentEleveId} : {message}");
        OnChambreErreur?.Invoke();
    }
}

ChambreData.cs

ScriptableObject de configuration sérialisé depuis PlayFab.

using System;
using System.Collections.Generic;

[Serializable]
public class ChambreData
{
    public string   eleveId;
    public string   themeCouleur;        // ex. "bleu", "vert", "orange"
    public string[] mobilierActifs;      // IDs des objets placés
    public int      dynablocks;          // monnaie accumulée
}

Scène associée

La chambre est rendue dans CompteEleve.unity via un RenderTexture — même pattern que le Robot.