Files
BABA_YAGA/Assets/Scripts/Audio/AudioDatabase.cs

49 lines
1.3 KiB
C#
Raw Normal View History

2026-04-30 17:47:29 +07:00
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;
}
}
}