69 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|