【m】优化音频管理器

This commit is contained in:
Han
2025-12-19 11:55:13 +08:00
parent 99e5409122
commit 3910229c5d
8 changed files with 70 additions and 37 deletions

View File

@@ -5,36 +5,52 @@ using UnityEngine.Internal;
namespace Stary.Evo.AudioCore
{
public static class CoroutineHelper
// 音频协程启动器
public class CoroutineHelper : IDisposable
{
public static CoroutineRunner coroutineRunner;
public static void SetRunner()
private static CoroutineHelper _instance = new CoroutineHelper();
public static CoroutineHelper Instance => _instance;
private CoroutineRunner _coroutineRunner;
private CoroutineHelper()
{
GameObject runnerObject = new GameObject("CoroutineRunner");
coroutineRunner = runnerObject.AddComponent<CoroutineRunner>();
_coroutineRunner= runnerObject.AddComponent<CoroutineRunner>();
}
public static Coroutine StartCoroutine(IEnumerator coroutine)
public Coroutine StartCoroutine(IEnumerator coroutine)
{
Coroutine myCoroutine = coroutineRunner.StartCoroutine(coroutine);
Coroutine myCoroutine = _coroutineRunner.StartIEnumerator(coroutine);
return myCoroutine;
}
public static void StopCoroutine(Coroutine myCoroutine)
public void StopCoroutine(Coroutine myCoroutine)
{
coroutineRunner.StopCoroutine(myCoroutine);
_coroutineRunner.StopIEnumerator(myCoroutine);
}
public void Dispose()
{
if (_coroutineRunner != null)
{
GameObject.Destroy(_coroutineRunner.gameObject);
_coroutineRunner = null;
}
if (CoroutineHelper.Instance != null)
{
CoroutineHelper._instance = null;
}
}
public class CoroutineRunner : MonoBehaviour
{
private void OnDestroy()
public Coroutine StartIEnumerator(IEnumerator coroutine)
{
if (coroutineRunner != null)
{
coroutineRunner.StopAllCoroutines();
coroutineRunner = null;
}
Coroutine myCoroutine = StartCoroutine(coroutine);
return myCoroutine;
}
public void StopIEnumerator(Coroutine myCoroutine)
{
StopCoroutine(myCoroutine);
}
}
}
}