facebook twitter hatena line email

Unity/UniRx/AsObservable

提供: 初心者エンジニアの簡易メモ
2021年9月6日 (月) 15:22時点におけるAdmin (トーク | 投稿記録)による版 (サンプル)

移動: 案内検索

UniRxとは

UnityでもReactiveExtensionsを使えるように移植したもの

UniRxインストール

https://assetstore.unity.com/packages/tools/integration/unirx-reactive-extensions-for-unity-17276


サンプル

ボタンクリックで、カウントアップする

AsObservableサンプル

public class SampleScene : MonoBehaviour
{
    void Start()
    {
        Button button = GameObject.Find("Button").GetComponent<Button>();
        Text text = GameObject.Find("Text").GetComponent<Text>();
        button.onClick.AsObservable()
            .Select(_ => 1)
            .Scan(0, (element, acc) => element + acc)
            .Subscribe (count => text.text = count.ToString ())
            .AddTo(gameObject);
    }
}

OnClickAsObservableサンプル

public class SampleScene : MonoBehaviour
{
    void Start()
    {
        Button button = GameObject.Find("Button").GetComponent<Button>();
        Text text = GameObject.Find("Text").GetComponent<Text>();
        button.OnClickAsObservable()
            .Select(_ => 1)
            .Scan(0, (element, acc) => element + acc)
            .SubscribeToText(text)
            .AddTo(gameObject);
    }
}

参考

https://qiita.com/RyotaMurohoshi/items/01df35f1940e93fbb10d