using UnityEngine; using UnityEngine.UI; public class SlideNavigation : MonoBehaviour { [SerializeField] private GameObject[] slides; // Array untuk menyimpan semua slide private int currentSlideIndex = 0; // Indeks slide yang sedang aktif // Assign AudioSource global yang memutar materi audio di Inspector [SerializeField] private AudioSource materialAudioSource; private void Start() { // Aktifkan hanya slide pertama, sembunyikan lainnya for (int i = 0; i < slides.Length; i++) { slides[i].SetActive(i == 0); } currentSlideIndex = 0; } // Fungsi untuk menghentikan audio materi private void StopAllMaterialAudio() { if (materialAudioSource != null) { materialAudioSource.Stop(); } } private void ResetAudioInCurrentSlide() { // Jika di slide terdapat lebih dari satu komponen PlayAudio, reset semuanya PlayAudio[] playAudioComponents = slides[currentSlideIndex].GetComponentsInChildren(); foreach (PlayAudio pa in playAudioComponents) { pa.ResetAudio(); } } // Fungsi untuk pindah ke slide berikutnya public void NextSlide() { if (currentSlideIndex < slides.Length - 1) { ResetAudioInCurrentSlide(); StopAllMaterialAudio(); // Hentikan audio sebelum slide berganti slides[currentSlideIndex].SetActive(false); currentSlideIndex++; slides[currentSlideIndex].SetActive(true); } } // Fungsi untuk kembali ke slide sebelumnya public void PreviousSlide() { if (currentSlideIndex > 0) { ResetAudioInCurrentSlide(); StopAllMaterialAudio(); // Hentikan audio sebelum slide berganti slides[currentSlideIndex].SetActive(false); currentSlideIndex--; slides[currentSlideIndex].SetActive(true); } } }