【发布时间】:2019-09-17 08:52:41
【问题描述】:
我正在尝试将响应式扩展与 MonoGame 一起使用。我不知道这是新的还是有人在我之前尝试过,但我得到的结果好坏参半。
我的情况如下。我有一堆SpaceShips 每 2 秒投下一颗炸弹。我就是这样做的:
class SpaceShip
{
private IDisposable bombDropper;
public SpaceShip()
{
bombDropper = Observable.Interval(TimeSpan.FromSeconds(2))
.ObserveOn(Dispatcher.CurrentDispatcher)
.Subscribe(_ =>
{
if (Top + Height + 20 < Constants.GroundTop)
{
Stage.AddRelative(new Bomb(), this, RelativePosition.Bottom);
}
});
}
}
问题是只有第一艘宇宙飞船投下炸弹。为什么? SpaceShip 的每个实例都是不同的,每个实例都有自己的 observable,但只有第一个是触发事件!
有人告诉我这个:
我有点怀疑您的调度程序没有更新或 在调度程序的同一线程上阻塞不确定是否单声道游戏 会有一个dispatcher 调度器往往是一个非常Windows 的东西
所以我的问题是:如何修复此代码?
【问题讨论】:
标签: c# .net reactive-programming system.reactive monogame