using UnityEngine; using System.Collections.Generic; public class RecordDisplay : MonoBehaviour { public Transform contentParent; public GameObject recordPrefab; [Header("Daftar Gambar Menu")] public List listGambarMenu; // Tambahkan OnEnable supaya otomatis update tiap panel dibuka void OnEnable() { RefreshDisplay(); } public void RefreshDisplay() { // 1. Cek dulu barangnya ada nggak, biar gak error merah lagi if (SaveSystem.instance == null) { Debug.LogWarning("SaveSystem belum ada! Pastikan mulai dari HomePage."); return; } if (contentParent == null || recordPrefab == null) { Debug.LogError("Slot Content atau Prefab di Inspector belum diisi!"); return; } // 2. Bersihkan Content (Penting: Pakai cara yang lebih paksa) foreach (Transform child in contentParent) { // Kita pakai DestroyImmediate kalau di Editor atau semacamnya, // tapi untuk amannya kita pakai trik pindah folder/hilangkan visibility child.gameObject.SetActive(false); // Sembunyikan dulu Destroy(child.gameObject); // Baru hancurkan } // 3. Buat Kartu Baru berdasarkan data SaveSystem for (int i = 0; i < SaveSystem.instance.data.allMenuStats.Length; i++) { // Ambil data dari gudang (SaveSystem) var stats = SaveSystem.instance.data.allMenuStats[i]; // Buat kartu baru di dalam Content GameObject newGo = Instantiate(recordPrefab, contentParent); // Set skalanya ke 1 (Kadang kalau Instantiate suka jadi gede/kecil sendiri) newGo.transform.localScale = Vector3.one; RecordItemUI itemUI = newGo.GetComponent(); if (itemUI != null) { // Ambil gambar dari list. Kalau listnya kurang, kasih null biar gak error. Sprite gambarYangDipakai = (i < listGambarMenu.Count) ? listGambarMenu[i] : null; // Kirim data ke kartu itemUI.SetData(gambarYangDipakai, stats.jumlahKunjungan.ToString(), stats.highscore.ToString(), stats.totalWaktu); } } Debug.Log("Board Informasi Berhasil Diperbarui!"); } }