summaryrefslogtreecommitdiff
path: root/Assembly_CSharp/UI/AudioPoolSource.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-11-26 23:52:30 +0800
committerchai <215380520@qq.com>2023-11-26 23:52:30 +0800
commit626381f061cde0c78564f6336e3131835cf20a5b (patch)
treed9991d6eda6ae5d7649ac91ecaa3b4dc833cd4c3 /Assembly_CSharp/UI/AudioPoolSource.cs
parent0e63c4a2c6dec8dfa260501fb7d73750261ea7b7 (diff)
* move
Diffstat (limited to 'Assembly_CSharp/UI/AudioPoolSource.cs')
-rw-r--r--Assembly_CSharp/UI/AudioPoolSource.cs40
1 files changed, 40 insertions, 0 deletions
diff --git a/Assembly_CSharp/UI/AudioPoolSource.cs b/Assembly_CSharp/UI/AudioPoolSource.cs
new file mode 100644
index 0000000..883151d
--- /dev/null
+++ b/Assembly_CSharp/UI/AudioPoolSource.cs
@@ -0,0 +1,40 @@
+using UnityEngine;
+
+public class AudioPoolSource : MonoBehaviour
+{
+ [SerializeField]
+ private AudioSource audioS;
+
+ private float timer = -1f;
+
+ private bool active;
+
+ public void PlayClip(AudioClip clip, float volume, float pitchVariance)
+ {
+ audioS.Stop();
+ audioS.clip = clip;
+ audioS.pitch = 1f + Random.Range(0f - pitchVariance, pitchVariance);
+ audioS.volume = volume;
+ timer = clip.length + 0.1f;
+ active = true;
+ audioS.Play();
+ }
+
+ private void Update()
+ {
+ if (!active)
+ {
+ return;
+ }
+ timer -= Time.deltaTime;
+ if (timer <= 0f)
+ {
+ active = false;
+ if (base.transform.parent != null)
+ {
+ base.transform.parent = null;
+ }
+ SFXManager.instance.sources.Add(this);
+ }
+ }
+}