Encounter / Assets / Scripts / AudioHandling / SoundManager.cs
SoundManager.cs
Raw
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();
        }
    }
}