unity study

Unityでサクッとモックを作れるようになることを目指して、基本的なテクニックを抑えていく過程を残すブログのつもりだったけど、今はただ自分のトラブルシューティングメモになってるブログ

あるストリームが発火したタイミングで、別のストリームの最後の値を流すようなストリーム

あるタイミングで発火するstreamAとstreamBがあり、streamAが発火したタイミングでstreamBの最後の値を流したい。
しかしstreamBが発火しても値は流れてこない。
というようなことをやりたいのだが、後者の条件が厄介でZipLatestでもないしCombineLatestでもないし、どうしたものかと考えた結果。

streamA.Select(_ => Time.frameCount)
	.CombineLatest(streamB.Select(x => new Tuple<int, string>(Time.frameCount, x)), (a, b) => a < b.Item1 ? null : b.Item2)
	.Where(x => x != null)
	.Subscribe(x => {});

それぞれのストリームの発生時刻を流して比較することで、どっちから発火したものかを判断して流す流さないを制御するようにした。