【m】优化音频管理器
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user