using System;
using UnityEngine.Audio;
using UnityEngine;
public class AudioManager : MonoBehaviour
{
public Sound[] sounds;
public static AudioManager instance;
// use for initialization
private void Awake()
{
// to avoid multiple audio manager in some scene
// and we don't want music to restart every time we change scene.
if (instance == null)
instance = this;
else
{
Destroy(gameObject);
return;
}
DontDestroyOnLoad(gameObject);
foreach (Sound s in sounds)
{
s.source = gameObject.AddComponent<AudioSource>();
s.source.clip = s.clip;
s.source.outputAudioMixerGroup = s.mixer;
s.source.volume = s.volume;
s.source.pitch = s.pitch;
s.source.loop = s.loop;
}
}
private void Start()
{
Play("background");
}
public void Play (string name)
{
//FindObjectOfType<AudioManager>().Play("name");
Sound s = Array.Find(sounds, sound => sound.name == name);
if (s == null)
{
Debug.LogError("Sound: " + name + "not found!");
return;
}
s.source.Play();
}
}
// heres the other public Sound code
using UnityEngine.Audio;
using UnityEngine;
[System.Serializable]
public class Sound
{
public string name;
public AudioClip clip;
public AudioMixerGroup mixer;
[Range(0f, 1f)]
public float volume;
[Range(.1f, 3f)]
public float pitch;
public bool loop;
[HideInInspector]
public AudioSource source;
}