上の記事にある通り、Debugオペレータはとても便利なやつです
ですが、調子に乗って変数を見に行こうとするとハマるかもしれません
フォーマット文字列でDebugオペレータに変数をあげてはいけません(戒め)
#問題のコード
文字列補完でDebugにTime.timeを読ませている
void Start()
{
this.UpdateAsObservable()
.Debug($"Time.time is: {Time.time}")
.Subscribe(x => Debug.Log($"Time.time is: {Time.time}"));
}
##実行結果
Subscribe()
内では正常に取れているのに、Debug()
内ではTime.time = 0
のまま!!!
つまり、Start()
時点でのTime.time
を参照してしまっているわけです(^q^)
#それでもしたい
力が欲しいか?
void Start()
{
this.UpdateAsObservable()
.Select(_ => Time.time)
.Debug("Time.time is: ")
.Subscribe(x => Debug.Log($"Time.time is: {Time.time}"));
}
やってやれないことはありません
observable経由で値を渡せるようにすればよいので、Select()
で無理やり作ってやります
##実行結果
OnNext()
のかっこ内に正しくTime.time
が出力されています
#結論
力技なんでやめといたほうがいいと思います