Last active
August 29, 2015 14:16
-
-
Save hacha/bc6791e7bfa7aaf20a11 to your computer and use it in GitHub Desktop.
生成されて10秒後に消滅するボール、みたいなものをUniRxで記述したもの
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using System; | |
using UniRx; | |
public class Ball : MonoBehaviour | |
{ | |
void Awake () | |
{ | |
// var stream = Observable | |
// .EveryUpdate () | |
// .Delay(TimeSpan.FromSeconds(10)) | |
// .Take (1) | |
// ; | |
// var subscription = stream.Subscribe( _ => Destroy(gameObject) ); | |
// stream.Subscribe(_ => subscription.Dispose() ); | |
// 削除しちゃうなら別に明示的にDispose()しなくてよかったみたい。 | |
// なので下記になった。シンプル | |
Observable.Timer(TimeSpan.FromSeconds(10)).Subscribe( _ => Destroy(gameObject) ); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
なるほー。
_ => Destroy(gameObject)
の部分は一回しか呼ばれない&この辞典でgameObjectはDestoryされている。ということになると思います。
別の何かが、そのBallを破壊してるのではかなー、と思うのですがどうでしょう?
もしそうなら単純な対策は
ですが、 Timerのライフサイクルを考えると、例えばシーン変更とか(Ballは破壊される!)の時とかも、このTimerは残り続けちゃうんですよね。
というわけで、どっかで集中的に
CompositeDisposable
で管理していて、Subscribe().AddTo(composite); して、comositeをまとめてDispose(かClear)っていうのも手法としてよくあります。