MIF_E31230979/Assets/Scripts/HomePage/Backsound.cs

84 lines
2.2 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement; // Tambahkan ini
public class BackSound : MonoBehaviour
{
private AudioSource audioSource;
[Header("UI Settings")]
public Image musicButtonImage;
public Sprite musicOnSprite;
public Sprite musicOffSprite;
private bool isMuted = false;
private void Awake()
{
GameObject[] obj = GameObject.FindGameObjectsWithTag("Music");
if (obj.Length > 1)
{
Destroy(this.gameObject);
}
else
{
DontDestroyOnLoad(this.gameObject);
}
audioSource = GetComponent<AudioSource>();
}
// Fungsi otomatis yang jalan setiap kali Scene baru selesai dimuat
private void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
}
private void OnDisable()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
// Ganti "HomePage" dengan nama scene menu utamamu yang ada di Build Settings
if (scene.name == "HomePage")
{
FindAndSetupButton();
}
}
void FindAndSetupButton()
{
// Cari object dengan nama "Button Music" di scene baru
GameObject btnObj = GameObject.Find("Button Music");
if (btnObj != null)
{
musicButtonImage = btnObj.GetComponent<Image>();
// Pasang ulang fungsi Klik-nya secara otomatis lewat kode
Button btn = btnObj.GetComponent<Button>();
btn.onClick.RemoveAllListeners(); // Bersihkan listener lama
btn.onClick.AddListener(ToggleMusic); // Pasang ToggleMusic
// Update visual tombol sesuai status terakhir (Muted atau tidak)
UpdateVisual();
}
}
public void ToggleMusic()
{
isMuted = !isMuted;
audioSource.mute = isMuted; // Pakai .mute lebih simpel untuk toggle
UpdateVisual();
}
void UpdateVisual()
{
if (musicButtonImage != null)
{
musicButtonImage.sprite = isMuted ? musicOffSprite : musicOnSprite;
}
}
}