Skip to content

AddTo

1. 概要

AddTo は、IDisposable を Unity の GameObject または Component のライフサイクルに紐づけ、対象が破棄されたときに自動的に Dispose する R3.Unity の拡張メソッドです。

AddTo 自体は Observable の通知を変換・制御するオペレーターではありません。ただし Unity で購読を扱ううえで重要なライフサイクル連動 API であるため解説をします。

Unity では MonoBehaviourGameObject の破棄後に購読が残ると、不要な処理や破棄済みオブジェクト参照が発生しやすくなります。AddTo を使うと、購読解除を対象オブジェクトの寿命に合わせられます。

2. シグネチャ

csharp
public static T AddTo<T>(
    this T disposable,
    GameObject gameObject)
    where T : IDisposable

public static T AddTo<T>(
    this T disposable,
    Component gameObjectComponent)
    where T : IDisposable

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

AddTo のマーブルダイアグラム

対象の GameObject / Component が破棄されると、登録済みの IDisposable が Dispose され、以降の購読は停止します。

4. サンプルコード

csharp
button.OnClickAsObservable()
    .Subscribe(_ => Play())
    .AddTo(this);

Observable.EveryUpdate()
    .Subscribe(_ => transform.Rotate(Vector3.up))
    .AddTo(gameObject);

5. 補足

AddTo は Observable の値を変換するオペレーターではなく、購読やリソースの破棄タイミングを Unity オブジェクトのライフサイクルへ接続するためのユーティリティです。MonoBehaviour 内で購読する場合は、多くのケースで AddTo(this) を付けると安全です。