64 lines
1.6 KiB
C#
64 lines
1.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public static class AudioHelper {
|
|
static Dictionary<int, AudioClip> ClipByID;
|
|
static Dictionary<AudioClip, int> IDByClip;
|
|
|
|
public enum AudioCategory : byte {
|
|
Music = 1,
|
|
Fx = 2,
|
|
Voice = 3
|
|
}
|
|
|
|
public static float VolumeLevel(AudioCategory category) {
|
|
return PlayerPrefs.GetFloat(category.ToString(), 0.375f); // Did you know default volume of 1 is a bad idea
|
|
}
|
|
|
|
public static void SetVolume(AudioCategory category, float level) {
|
|
PlayerPrefs.SetFloat(category.ToString(), level);
|
|
PlayerPrefs.Save();
|
|
}
|
|
|
|
public static int ByClip(AudioClip clip) {
|
|
if (IDByClip == null) Init();
|
|
if (IDByClip.TryGetValue(clip, out int idIfPresent)) {
|
|
return idIfPresent;
|
|
}
|
|
Debug.LogWarningFormat("{0} is not resources loaded clip!!", clip.name);
|
|
return 0;
|
|
}
|
|
|
|
public static AudioClip ByID(int id) {
|
|
if (ClipByID == null) Init();
|
|
try {
|
|
return ClipByID[id];
|
|
} catch {
|
|
throw new System.Exception(string.Format("Failure to find SFX with ID {0}", id));
|
|
}
|
|
|
|
}
|
|
|
|
// Build the audio lookup
|
|
static void Init() {
|
|
ClipByID = new Dictionary<int, AudioClip>();
|
|
IDByClip = new Dictionary<AudioClip,int>();
|
|
|
|
var allAudio = Resources.LoadAll<AudioClip>("");
|
|
|
|
for (int i = 0; i < allAudio.Length; ++i) {
|
|
var clip = allAudio[i];
|
|
ClipByID.Add(i, clip);
|
|
IDByClip.Add(clip, i);
|
|
}
|
|
|
|
var oString = "Loaded Sounds: ";
|
|
foreach (var key in ClipByID) {
|
|
oString += key;
|
|
}
|
|
|
|
Debug.Log(oString);
|
|
}
|
|
}
|