万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

UniRxでDestroyする時の注意

以下のようにやってる場合。

    void Awake ()
    {
        IObservable<long> updateStream = Observable.EveryUpdate ();
        updateStream.Subscribe (count => Fade ()).AddTo(eventResources);
    }

のようにしているとこのFade()メソッドに関連しているオブジェクトがDestroyされると

MissingReferenceException: The object of type 'Text' has been destroyed but you are still trying to access it.

のようなエラーになると思う。※今回はuGUIのTextの場合

    private CompositeDisposable eventResources = new CompositeDisposable();

のように宣言しておいて

    void OnDestroy()
    {
        eventResources.Dispose();
    }

メソッドを追加したらとりあえずエラーは消えた。おまじない的だが・・。