using UnityEngine; using System.Collections; using System.Collections.Generic; public class SoundFXManager : MonoBehaviour { public static SoundFXManager instance; [SerializeField] private AudioSource soundFXObject; private void Awake() { if (instance == null) { instance = this; } } public void PlaySound(AudioClip clip, Transform spawnPosition, float volume) { // spawn gameobject AudioSource audioSource = Instantiate(soundFXObject, spawnPosition.position, Quaternion.identity); // assign the audio clip audioSource.clip = clip; // set the volume audioSource.volume = volume; // play the sound audioSource.Play(); // get the length of the clip float clipLength = audioSource.clip.length; // destroy the gameobject after the clip has finished playing Destroy(audioSource.gameObject, clipLength); } public AudioSource PlayLoopingSound(AudioClip clip, Transform spawnPosition, float volume) { // Instantiate and configure audio source AudioSource audioSource = Instantiate(soundFXObject, spawnPosition.position, Quaternion.identity); audioSource.clip = clip; audioSource.volume = volume; audioSource.loop = true; // Enable looping audioSource.Play(); return audioSource; } public void StopLoopingSound(AudioSource audioSource) { if (audioSource != null) { audioSource.Stop(); Destroy(audioSource.gameObject); } } }