facebook twitter hatena line email

「Unity/UniRx/コールチン変換」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「==コールチン変換== ToYieldInstructionを使えば、Observableをコールチンに変換できる。 <pre> using System.Collections; using UnityEngine; using UniR...」)
 
(コールチン変換)
 
(同じ利用者による、間の1版が非表示)
行1: 行1:
 
==コールチン変換==
 
==コールチン変換==
ToYieldInstructionを使えば、Observableをコールチンに変換できる。
+
ToYieldInstructionを使えば、Observableをコールチンに変換できる。ボタンを押したらendがログに出るサンプル
 
<pre>
 
<pre>
 
using System.Collections;
 
using System.Collections;
行6: 行6:
 
using UniRx;
 
using UniRx;
 
using UnityEngine.UI;
 
using UnityEngine.UI;
public class Example : MonoBehaviour  
+
 
 +
public class CoroutineScene : MonoBehaviour
 
{
 
{
     private Button _button;
+
     Button button;
     public void Start()
+
     void Start()
 
     {
 
     {
         StartCoroutine(ExampleCoroutine());
+
         button = GameObject.Find("Button").GetComponent<Button>();
 +
        Exec();
 
     }
 
     }
     private IEnumerator ExampleCoroutine()
+
     async void Exec()
 
     {
 
     {
         yield return _button
+
        await StartCoroutine(ExampleCoroutine());
 +
        Debug.Log("end");
 +
    }
 +
    IEnumerator ExampleCoroutine()
 +
    {
 +
         yield return button
 
             .OnClickAsObservable()
 
             .OnClickAsObservable()
 
             .FirstOrDefault()
 
             .FirstOrDefault()

2021年12月16日 (木) 17:45時点における最新版

コールチン変換

ToYieldInstructionを使えば、Observableをコールチンに変換できる。ボタンを押したらendがログに出るサンプル

using System.Collections;
using UnityEngine;
using UniRx;
using UnityEngine.UI;

public class CoroutineScene : MonoBehaviour
{
    Button button;
    void Start()
    {
        button = GameObject.Find("Button").GetComponent<Button>();
        Exec();
    }
    async void Exec()
    {
        await StartCoroutine(ExampleCoroutine());
        Debug.Log("end");
    }
    IEnumerator ExampleCoroutine()
    {
        yield return button
            .OnClickAsObservable()
            .FirstOrDefault()
            .ToYieldInstruction();
    }
}

参考: https://light11.hatenadiary.com/entry/2018/11/05/230944