Observableをコルーチンに変換する方法のまとめです。
ToYieldInstruction
Observableをコルーチンに変換するにはToYieldInstruction()オペレータを使います。
これを使うと「ボタンAの押下を待つ > ボタンBの押下を待つ > コルーチンを終了する」
のような一連の処理がきれいに書けるようになります。
ソースコードを見てもらうのが早そうです。
ソースコード
というわけでソースコードです。
using System.Collections; using UnityEngine; using UniRx; using UnityEngine.UI; public class Example : MonoBehaviour { [SerializeField] private Button _buttonA; [SerializeField] private Button _buttonB; public void Start() { StartCoroutine(ExampleCoroutine()); } private IEnumerator ExampleCoroutine() { Debug.Log("Aが押されるのを待ちます."); yield return _buttonA .OnClickAsObservable() .FirstOrDefault() .ToYieldInstruction(); Debug.Log("Bが押されるのを待ちます."); yield return _buttonB .OnClickAsObservable() .FirstOrDefault() .ToYieldInstruction(); Debug.Log("両方押されました."); } }