Update Audio
This commit is contained in:
48
Assets/Scripts/Audio/AudioDatabase.cs
Normal file
48
Assets/Scripts/Audio/AudioDatabase.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Audio;
|
||||
|
||||
namespace Hallucinate.Audio
|
||||
{
|
||||
[Serializable]
|
||||
public class AudioSample
|
||||
{
|
||||
public string Name;
|
||||
public AudioClip Clip;
|
||||
[Range(0f, 1f)] public float DefaultVolume = 1f;
|
||||
[Range(0.1f, 3f)] public float DefaultPitch = 1f;
|
||||
public AudioMixerGroup MixerGroup;
|
||||
}
|
||||
|
||||
[CreateAssetMenu(fileName = "AudioDatabase", menuName = "Hallucinate/Audio/Audio Database")]
|
||||
public class AudioDatabase : ScriptableObject
|
||||
{
|
||||
[SerializeField] private List<AudioSample> samples = new List<AudioSample>();
|
||||
|
||||
private Dictionary<string, AudioSample> _sampleCache;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
_sampleCache = new Dictionary<string, AudioSample>();
|
||||
foreach (var sample in samples)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(sample.Name) && !_sampleCache.ContainsKey(sample.Name))
|
||||
{
|
||||
_sampleCache.Add(sample.Name, sample);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public AudioSample GetSample(string name)
|
||||
{
|
||||
if (_sampleCache == null) Initialize();
|
||||
|
||||
if (_sampleCache.TryGetValue(name, out var sample))
|
||||
{
|
||||
return sample;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user