Skip to content

UnityEvent.AsObservable

1. 概要

UnityEvent.AsObservable は、Unity の UnityEvent / UnityEvent<T> / UnityEvent<T0, T1> / UnityEvent<T0, T1, T2> / UnityEvent<T0, T1, T2, T3> を Observable に変換する R3.Unity のファクトリメソッドです。

2. シグネチャ

csharp
public static Observable<Unit> AsObservable(
    this UnityEvent unityEvent,
    CancellationToken cancellationToken = default)

public static Observable<T> AsObservable<T>(
    this UnityEvent<T> unityEvent,
    CancellationToken cancellationToken = default)

public static Observable<(T0 Arg0, T1 Arg1)> AsObservable<T0, T1>(
    this UnityEvent<T0, T1> unityEvent,
    CancellationToken cancellationToken = default)

public static Observable<(T0 Arg0, T1 Arg1, T2 Arg2)> AsObservable<T0, T1, T2>(
    this UnityEvent<T0, T1, T2> unityEvent,
    CancellationToken cancellationToken = default)

public static Observable<(T0 Arg0, T1 Arg1, T2 Arg2, T3 Arg3)> AsObservable<T0, T1, T2, T3>(
    this UnityEvent<T0, T1, T2, T3> unityEvent,
    CancellationToken cancellationToken = default)

3. マーブルダイアグラム

UnityEvent.AsObservable のマーブルダイアグラム

UnityEvent が発火するたびに、対応する引数が Observable の値として発行されます。

4. サンプルコード

csharp
button.onClick
    .AsObservable()
    .Subscribe(_ => Debug.Log("clicked"))
    .AddTo(this);

slider.onValueChanged
    .AsObservable()
    .Subscribe(value => Debug.Log(value))
    .AddTo(this);