Files
plugin-library/Assets/04.AudioCore/RunTime/Base/CoroutineHelper.cs
2025-04-22 13:50:46 +08:00

41 lines
1.1 KiB
C#

using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Internal;
namespace Stary.Evo.AudioCore
{
public static class CoroutineHelper
{
private static CoroutineRunner coroutineRunner;
public static void SetRunner()
{
GameObject runnerObject = new GameObject("CoroutineRunner");
coroutineRunner = runnerObject.AddComponent<CoroutineRunner>();
}
public static Coroutine StartCoroutine(IEnumerator coroutine)
{
Coroutine myCoroutine = coroutineRunner.StartCoroutine(coroutine);
return myCoroutine;
}
public static void StopCoroutine(Coroutine myCoroutine)
{
coroutineRunner.StopCoroutine(myCoroutine);
}
private class CoroutineRunner : MonoBehaviour
{
private void OnDestroy()
{
if (coroutineRunner != null)
{
coroutineRunner.StopAllCoroutines();
coroutineRunner = null;
}
}
}
}
}