using Firebase.Database; using UnityEngine; using UnityEngine.UI; public class RiwayatSkor : MonoBehaviour //library unity, agar file bisa ditempelkan di unity { public Text QuizScoreText; //Tempat untuk menampilkan skor quiz public Text PretestScoreText; //Tempat untuk menampilkan skor pretest private string userID; //mengambil userid dari database private DatabaseReference dbReference; //menghubungkan dengan database private int latestQuizScore = -1; //menampilkan score quiz terakhir dari firebase private int latestPretestScore = -1; //menampilkan score pretes terakhir dari firebase private bool updateUI = false; //penanda jika data berhasil di ambil dari database void Start() { userID = PlayerPrefs.GetString("UserID", ""); if (string.IsNullOrEmpty(userID)) { Debug.LogError("UserID tidak ditemukan."); return; } dbReference = FirebaseDatabase.DefaultInstance.RootReference; LoadScores(); //mengambil data skor dari Firebase berdasarkan userID } void Update() { if (updateUI) //untuk mengupdate score { if (latestQuizScore >= 0) //jika tidak ada scorenya maka nilainya 0 //mengubah nilai integer menjadi string agar bisa ditampilkan di teks UI. QuizScoreText.text = latestQuizScore.ToString(); if (latestPretestScore >= 0) PretestScoreText.text = latestPretestScore.ToString(); updateUI = false; // mengatur agar update hanya dijalakan ketika selesai mengerjakan soal } } void LoadScores() //mengambil data skor pengguna { //mengambil score dari userID pengguna dbReference.Child("users").Child(userID).Child("scores").GetValueAsync().ContinueWith(task => { if (task.IsFaulted || !task.IsCompleted) //untuk mengecek apakah berhasil atau gagal mengambil data { Debug.LogError("Gagal mengambil skor: " + task.Exception); return; } DataSnapshot snapshot = task.Result; //Menyimpan hasil dari pengambilan data dari Firebase if (snapshot.Exists) //Mengecek apakah data skor benar-benar tersedia di Firebase. { if (snapshot.Child("quizScore").Exists) //Mengecek apakah data quizScore ada. latestQuizScore = int.Parse(snapshot.Child("quizScore").Value.ToString()); //Jika ada, ubah nilainya ke int lalu simpan ke kolom quiz yang ada di unity if (snapshot.Child("pretestScore").Exists) //Mengecek apakah data pretestScore ada. latestPretestScore = int.Parse(snapshot.Child("pretestScore").Value.ToString()); //Jika ada, ubah nilainya ke int lalu simpan ke kolom pretest yang ada di unity updateUI = true; //menampilkan score ke panel di unity } else { Debug.Log("Data skor belum tersedia."); } }); } }