EcoQuest/Assets/Script/SlideNavigation.cs

69 lines
2.0 KiB
C#

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<PlayAudio>();
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);
}
}
}