61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.Audio;
|
|
|
|
public class AudioManager : MonoBehaviour{
|
|
|
|
[SerializeField] Sound[] sounds;
|
|
|
|
public static AudioManager instance;
|
|
|
|
void Awake(){
|
|
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.volume = s.volume;
|
|
s.source.pitch = s.pitch;
|
|
s.source.loop = s.loop;
|
|
}
|
|
}
|
|
|
|
public void Play(string name, bool randomPitch){
|
|
Sound s = Array.Find(sounds, sound => sound.name == name);
|
|
|
|
if (s == null){
|
|
Debug.LogWarning("Sound: " + name + " not found!");
|
|
return;
|
|
}
|
|
|
|
if (randomPitch){
|
|
s.source.volume = s.volume * (1f + UnityEngine.Random.Range(-s.volumeVariance / 2f, s.volumeVariance / 2f));
|
|
s.source.pitch = s.pitch * (1f + UnityEngine.Random.Range(-s.pitchVariance / 2f, s.pitchVariance / 2f));
|
|
}
|
|
|
|
s.source.Play();
|
|
}
|
|
|
|
public void PlayOneShot(string name, bool randomPitch){
|
|
Sound s = Array.Find(sounds, sound => sound.name == name);
|
|
|
|
if (s == null){
|
|
Debug.LogWarning("Sound: " + name + " not found!");
|
|
return;
|
|
}
|
|
|
|
if (randomPitch){
|
|
s.source.volume = s.volume * (1f + UnityEngine.Random.Range(-s.volumeVariance / 2f, s.volumeVariance / 2f));
|
|
s.source.pitch = s.pitch * (1f + UnityEngine.Random.Range(-s.pitchVariance / 2f, s.pitchVariance / 2f));
|
|
}
|
|
|
|
s.source.PlayOneShot(s.clip);
|
|
}
|
|
}
|