using System; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; /// <summary> /// Handles primarily Sound Effects /// </summary> public class SoundManager : MonoBehaviour { public static SoundManager Instance { get; private set; } // Singleton pattern Instance call for Sound [SerializeField] private AudioSource[] audioSource; // Audio source component linked to this manager /// <summary> /// Retrieval system for this sound manager's audio source /// </summary> /// <returns>The audio source attached to this sound manager</returns> public AudioSource[] GetAudioSources() => audioSource; /// <summary> /// Singleton pattern generation for the sound manager /// </summary> private void Awake() { Instance = this; } /// <summary> /// Plays a sound effect by passing in a clip to play /// </summary> /// <param name="clip">The clip to play</param> public void PlaySoundFX(AudioClip clip) { foreach (AudioSource source in audioSource) { if (!source.isPlaying) { source.clip = clip; source.Play(); break; } } } /// <summary> /// Stops the sound from playing in situations needed /// </summary> public void HaltSoundFX() { foreach (AudioSource source in audioSource) { if (source.isPlaying) source.Stop(); } } }