コルーチンを呼び出している間中はタップを無効にしたいとか
そういったことがあり、呼び出し毎に無効有効処理を書くのが面倒だったので
一括でできないかと思い作ってみた
コルーチンを利用する場合はこのクラスの StartCoroutine
を呼び出すようにする
※今回は Singleton にしなかったが Singleton のが使いやすいとは思う
public class CoroutineManager : MonoBehaviour { /// <summary> /// 動いてる間タップ制御を無効にする /// </summary> public void StartCoroutine(params IEnumerator[] routines) { StartCoroutine(StartCoroutineAsync(routines)); } private IEnumerator StartCoroutineAsync(params IEnumerator[] routines) { inputHandler.SetEnable(false); foreach (var r in routine) { yield return r; } inputHandler.SetEnable(true); } }
呼び出し側では今までとそこまで変わりなく、IEnumerator
メソッドを呼び出すだけ
特に意味はないですが複数呼び出せるようにしてあります
public class Sample : MonoBehaviour { [SerializedField] private CoroutineManager _coroutine; private void Start() { _coroutine.StartCoroutine( Method1(), Method2() ); } private IEnumerator Method1() { yield return null; } private IEnumerator Method1() { yield return null; } }