1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| using UnityEngine;
public class SoundManager : MonoBehaviour { public static SoundManager instance { get; private set; } private const string SOUNDMANAGER_VOLUME = "soundManagerVolume"; [SerializeField] private AudioClipRefsSO audioClipRefsSO; private int volume = 5; private void Awake() { instance = this; }
private void Start() { OrderManager.Instance.OnRecipeSuccessed += OrderManger_OnRecipeSuccessed; OrderManager.Instance.OnRecipeFailed += OrderManager_OnRecipeFailed; CutingCounter.Oncut += CutingCounter_Oncut; KitchenObjectHolder.OnDrop += KitchenObjectHolder_OnDrop; KitchenObjectHolder.OnPickUp += KitchenObjectHolder_OnPickUp; TrashCounter.OnTrashed += TrashCounter_OnTrashed;
LoadVolum(); }
private void TrashCounter_OnTrashed(object sender, System.EventArgs e) { PlaySound(audioClipRefsSO.trash); }
private void KitchenObjectHolder_OnPickUp(object sender, System.EventArgs e) { PlaySound(audioClipRefsSO.objectPickup); }
private void KitchenObjectHolder_OnDrop(object sender, System.EventArgs e) { PlaySound(audioClipRefsSO.objectDrop); }
private void CutingCounter_Oncut(object sender, System.EventArgs e) { PlaySound(audioClipRefsSO.chop); }
private void OrderManager_OnRecipeFailed(object sender, System.EventArgs e) { PlaySound(audioClipRefsSO.deliveryFail); }
private void OrderManger_OnRecipeSuccessed(object sender, System.EventArgs e) { PlaySound(audioClipRefsSO.deliverSuccess, 0.35f); }
public void PlayCoundDown() { PlaySound(audioClipRefsSO.warning); }
private void PlaySound(AudioClip[] audioClips, float volumeMutipler = 0.5f) { PlaySound(audioClips,Camera.main.transform.position, volumeMutipler); }
private void PlaySound(AudioClip[] audioClips, Vector3 position, float volumeMutipler = 0.5f) { if (volume == 0) return; int index = Random.Range(0, audioClips.Length); AudioSource.PlayClipAtPoint(audioClips[index], position, volumeMutipler*(volume/10.0f)); }
public void PlayStepSound(float volumeMutipler = 1f) { PlaySound(audioClipRefsSO.footstep, volumeMutipler); }
public void ChangeVolume() { volume++; if(volume > 10) { volume = 0; } SaveVolum();
}
public int GetVolume() { return volume; }
private void SaveVolum() { PlayerPrefs.SetInt(SOUNDMANAGER_VOLUME,volume); } private void LoadVolum() { volume = PlayerPrefs.GetInt(SOUNDMANAGER_VOLUME, volume); } }
|