first commit

This commit is contained in:
2026-03-20 17:55:53 +08:00
commit c5778c498b
328 changed files with 11867 additions and 0 deletions
@@ -0,0 +1,49 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
namespace OCES.Audio
{
public class AudioSourcePool
{
readonly Transform m_root;
readonly Queue<GameObject> m_audioSourcePool = new();
int m_counter;
AudioMixerGroup m_mixerGroup;
public AudioSourcePool(Transform root, AudioMixerGroup mixerGroup = null)
{
this.m_root = root;
this.m_mixerGroup = mixerGroup;
}
public AudioSource AcquireAudioSource()
{
GameObject go;
if (this.m_audioSourcePool.Count > 0)
{
go = this.m_audioSourcePool.Dequeue();
go.SetActive(true);
}
else
{
this.m_counter++;
go = new GameObject($"AudioSource{this.m_counter}");
go.transform.SetParent(this.m_root, false);
go.AddComponent<AudioSource>();
}
AudioSource audioSource = go.GetComponent<AudioSource>();
audioSource.outputAudioMixerGroup = this.m_mixerGroup;
return audioSource;
}
public void ReturnToPool(GameObject go)
{
AudioSource audioSource = go.GetComponent<AudioSource>();
audioSource.clip = null;
go.SetActive(false);
this.m_audioSourcePool.Enqueue(go);
}
}
}