88 lines
2.0 KiB
C#
88 lines
2.0 KiB
C#
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using TMPro;
|
|
using UnityEngine.UI;
|
|
|
|
public class MenuCeritaController : MonoBehaviour
|
|
{
|
|
[Header("UI Utama")]
|
|
public TMP_Text textNamaKarakter;
|
|
public TMP_Text textDialogAtas;
|
|
public TMP_Text textDialogBawah;
|
|
public Image imageAvatar;
|
|
|
|
[Header("Data Cerita")]
|
|
public CeritaLine[] daftarCerita;
|
|
|
|
private int indexDialog = 0;
|
|
|
|
private void Start()
|
|
{
|
|
TampilkanDialog();
|
|
}
|
|
|
|
public void Selanjutnya()
|
|
{
|
|
if (indexDialog < daftarCerita.Length - 1)
|
|
{
|
|
indexDialog++;
|
|
TampilkanDialog();
|
|
}
|
|
}
|
|
|
|
public void Sebelumnya()
|
|
{
|
|
if (indexDialog > 0)
|
|
{
|
|
indexDialog--;
|
|
TampilkanDialog();
|
|
}
|
|
}
|
|
|
|
public void KembaliKeMenuBelajar()
|
|
{
|
|
SceneManager.LoadScene("Menu Belajar");
|
|
}
|
|
|
|
private void TampilkanDialog()
|
|
{
|
|
if (daftarCerita == null || daftarCerita.Length == 0)
|
|
{
|
|
Debug.LogWarning("Data cerita belum diisi.");
|
|
return;
|
|
}
|
|
|
|
CeritaLine data = daftarCerita[indexDialog];
|
|
|
|
textNamaKarakter.text = data.namaKarakter;
|
|
|
|
if (imageAvatar != null && data.avatarKarakter != null)
|
|
{
|
|
imageAvatar.sprite = data.avatarKarakter;
|
|
}
|
|
|
|
// Dialog genap tampil di atas, dialog ganjil tampil di bawah
|
|
if (indexDialog % 2 == 0)
|
|
{
|
|
textDialogAtas.text = data.isiDialog;
|
|
textDialogBawah.text = "";
|
|
}
|
|
else
|
|
{
|
|
// Agar dialog sebelumnya tetap terlihat di atas
|
|
textDialogAtas.text = daftarCerita[indexDialog - 1].isiDialog;
|
|
textDialogBawah.text = data.isiDialog;
|
|
}
|
|
}
|
|
}
|
|
|
|
[System.Serializable]
|
|
public class CeritaLine
|
|
{
|
|
public string namaKarakter;
|
|
|
|
[TextArea(2, 5)]
|
|
public string isiDialog;
|
|
|
|
public Sprite avatarKarakter;
|
|
} |