101 lines
2.6 KiB
C#
101 lines
2.6 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
/// <summary>
|
|
/// Attach ke GameObject yang SAMA dengan MenuMateriSlide.
|
|
/// Tambahkan AudioSource baru (bukan yang dipakai button) ke GameObject ini,
|
|
/// lalu assign ke field audioSource di Inspector.
|
|
/// </summary>
|
|
public class NarasiAudio : MonoBehaviour
|
|
{
|
|
[Header("Audio")]
|
|
public AudioSource audioSource;
|
|
public Button buttonAudio;
|
|
|
|
[Range(0f, 1f)]
|
|
public float backsoundVolumeDuringNarasi = 0.2f;
|
|
|
|
[Tooltip("Isi AudioClip sesuai urutan Materi 1, 2, 3, dst")]
|
|
public AudioClip[] narasiClips;
|
|
|
|
private int currentIndex = 0;
|
|
private float originalBacksoundVolume = 1f;
|
|
|
|
void Awake()
|
|
{
|
|
// Jika belum di-assign, cari AudioSource di children bernama "NarasiSource"
|
|
if (audioSource == null)
|
|
{
|
|
var go = new GameObject("NarasiSource");
|
|
go.transform.SetParent(transform);
|
|
audioSource = go.AddComponent<AudioSource>();
|
|
}
|
|
|
|
audioSource.playOnAwake = false;
|
|
audioSource.loop = false;
|
|
audioSource.Stop();
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
if (buttonAudio != null)
|
|
buttonAudio.onClick.AddListener(ToggleAudio);
|
|
|
|
if (MusicManager.Instance != null)
|
|
originalBacksoundVolume = MusicManager.Instance.GetVolume();
|
|
|
|
SetClip(0);
|
|
}
|
|
|
|
/// <summary>Dipanggil oleh MenuMateriSlide saat kartu berganti.</summary>
|
|
public void OnCardChanged(int index)
|
|
{
|
|
currentIndex = index;
|
|
StopAudio();
|
|
SetClip(index);
|
|
}
|
|
|
|
void SetClip(int index)
|
|
{
|
|
if (narasiClips == null || index >= narasiClips.Length) return;
|
|
if (narasiClips[index] == null) return;
|
|
|
|
audioSource.clip = narasiClips[index];
|
|
UpdateIcon(false);
|
|
}
|
|
|
|
public void ToggleAudio()
|
|
{
|
|
if (audioSource.isPlaying)
|
|
{
|
|
StopAudio();
|
|
}
|
|
else
|
|
{
|
|
if (audioSource.clip == null)
|
|
{
|
|
Debug.LogWarning("[NarasiAudio] Clip null di index " + currentIndex);
|
|
return;
|
|
}
|
|
audioSource.Play();
|
|
if (MusicManager.Instance != null)
|
|
MusicManager.Instance.SetVolume(backsoundVolumeDuringNarasi);
|
|
UpdateIcon(true);
|
|
}
|
|
}
|
|
|
|
void StopAudio()
|
|
{
|
|
if (audioSource != null && audioSource.isPlaying)
|
|
audioSource.Stop();
|
|
if (MusicManager.Instance != null)
|
|
MusicManager.Instance.SetVolume(originalBacksoundVolume);
|
|
UpdateIcon(false);
|
|
}
|
|
|
|
void UpdateIcon(bool isPlaying)
|
|
{
|
|
// Icon tidak dipakai
|
|
}
|
|
}
|