解決策
要点
Func<IEnumerator> ie2
といった変数に格納するようにすればOKです。
コード
- Spaceを押した場合(ie0)は一度のみ実行可
- A, Bを押した場合(ie1, ie2)は何度でも実行可
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class Sample : MonoBehaviour { IEnumerator ie0; Func<IEnumerator> ie1; Func<IEnumerator> ie2; IEnumerator Cor() { Debug.Log("Start"); yield return new WaitForSeconds(2.0f); Debug.Log("End"); } IEnumerator Cor2() { Debug.Log("Start2"); yield return ie2(); Debug.Log("End2"); } // Start is called before the first frame update void Start() { ie0 = Cor(); ie1 = Cor; ie2 = Cor; } // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Space)) { StartCoroutine(ie0); } else if (Input.GetKeyDown(KeyCode.A)) { StartCoroutine(ie1()); } else if (Input.GetKeyDown(KeyCode.B)) { StartCoroutine(Cor2()); } } }