AddTo
1. 概要
AddTo は、IDisposable を Unity の GameObject または Component のライフサイクルに紐づけ、対象が破棄されたときに自動的に Dispose する R3.Unity の拡張メソッドです。
AddTo 自体は Observable の通知を変換・制御するオペレーターではありません。ただし Unity で購読を扱ううえで重要なライフサイクル連動 API であるため解説をします。
Unity では MonoBehaviour や GameObject の破棄後に購読が残ると、不要な処理や破棄済みオブジェクト参照が発生しやすくなります。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 : IDisposable3. マーブルダイアグラム
対象の 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) を付けると安全です。