如何在 C# 中延迟某些东西

How to delay something in c#

我正在开发一款玩家可以投掷炸弹的游戏。我希望炸弹在爆炸前闪烁一秒钟,以便玩家有时间 运行 离开。我找到的唯一解决方案是 "sleep",但播放器在线程暂停时无法移动,因此不起作用。打开一个新线程并使用睡眠会不会很愚蠢?可能会有多个炸弹同时爆炸的情况。 我也会使用这种方法在炸弹爆炸时逐渐增加炸弹的命中范围。 如果相关的话,我正在研究 monogame。

我认为你在这里使用了错误的模式。

  • 你不想"wait"让炸弹爆炸。
  • 你需要的是让炸弹在给定的时间爆炸。

因此,在您的游戏逻辑中,当您遍历活动游戏对象的状态时,您需要检查它的生成时间与当前时间之间的时间,然后如果熔断时间已过则爆炸 :

If (Now() - SpawnTime >= Fusetime) { Boom(); }

你现在甚至可以有更多的逻辑。 例如:如果剩余时间小于1秒,则制造炸弹flash/beep/shake。或者任何你想要的。

else If (Now() - SpawnTime >= (Fusetime - 1)) { Beep(); }