public class CoroutineHelper : MonoBehaviour
{
private static MonoBehaviour monoInstance;

[RuntimeInitializeOnLoadMethod]
private static void Initializer()
{
monoInstance = new GameObject($"[{nameof(CoroutineHelper)}]").AddComponent<CoroutineHelper>();
DontDestroyOnLoad(monoInstance.gameObject);
}

public new static Coroutine StartCoroutine(IEnumerator coroutine)
{
return monoInstance.StartCoroutine(coroutine);
}

public new static void StopCoroutine(Coroutine coroutine)
{
monoInstance.StopCoroutine(coroutine);
}
}



์‚ฌ์šฉ๋ฒ• :

CoroutineHelper.StartCoroutine(์ฝ”๋ฃจํ‹ด_ํ•จ์ˆ˜());

CoroutineHelper.StopCoroutine(์ฝ”๋ฃจํ‹ด);


๊ทธ๋ƒฅ ์œ ๋‹ˆํ‹ฐ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง„ ํ•œ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด์— ์ฝ”๋ฃจํ‹ด ์‹คํ–‰์„ ๋ชฐ์•„์ฃผ๋Š” ๋ฐฉ์‹

๊ฐ€๋” MonoBehaviour ์ƒ์† ์•ˆ ๋ฐ›๊ณ  ์ฝ”๋ฃจํ‹ด ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ ๊ทธ๋Ÿด๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๋“ฏ..


์˜ˆ์ „์— unirx(MainThreadDispatcher)ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณธ์  ์žˆ์—ˆ๋Š”๋ฐ ๊ฑฐ๊ธฐ์„œ ์•„์ด๋””์–ด ์–ป์Œ