XNA ポーリング ベースの入力を Observable ベースの入力に変換しています。ここで、GetPressedKeys() メソッドは、20 ミリ秒ごとに列挙型キーの列挙型を返します。
Observable.Generate(
Enumerable.Empty<Keys>(),
pressed => true,
pressed => Keyboard.GetState().GetPressedKeys(),
pressed => pressed,
pressed => TimeSpan.FromMilliseconds(20),
scheduler
).DistinctUntilChanged();
私の問題は、これがすべてのサブスクライバーに対して行われることです。Rx が遅延評価を使用していることは理解していますが、複数のサブスクライバーが存在する場合でも、GetPressedKeys() 関数を間隔ごとに 1 回だけ実行するように、このホット オブザーバブルを何らかの形で制限したいと考えています。これは可能ですか?