Snaparazzi/Assets/Scripts/AudioManager.cs
2024-02-01 23:18:00 +01:00

66 lines
1.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
public class AudioManager : MonoBehaviour
{
public static AudioManager Instance;
[Header("AudioMixer")]
public AudioMixer mixer;
public AudioMixerSnapshot defaultSnapshot;
public AudioMixerSnapshot muteSnapshot;
[Header("References")]
public AudioSource musicSource;
public AudioSource sfxSource;
[Header("Musics")]
public List<MusicByTitle> musics = new List<MusicByTitle>();
private void Awake()
{
Instance = this;
}
public void ChangeMusic(MusicTitle _title)
{
//Debug.Log($"changing music to {_title}");
musicSource.clip = musics.Find(x => x.title == _title).clip;
musicSource.Play();
}
public void StopMusic()
{
musicSource.Stop();
}
public void PlaySFX(AudioClip _clip)
{
//Debug.Log($"playing {_clip.name} SFX");
sfxSource.PlayOneShot(_clip);
}
public void ToggleMute(bool _toggle)
{
mixer.TransitionToSnapshots(new AudioMixerSnapshot[] { defaultSnapshot, muteSnapshot }, _toggle ? new float[] { 0, 1 } : new float[] { 1, 0 }, 0.2f);
}
}
[System.Serializable]
public class MusicByTitle
{
public MusicTitle title;
public AudioClip clip;
}
public enum MusicTitle
{
Menu,
TakingPicture,
VotingSession,
Ending
}