c# – 使用计时器延迟xna游戏

前端之家收集整理的这篇文章主要介绍了c# – 使用计时器延迟xna游戏前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作一个二十一点游戏,其中一张卡需要在最后一张卡后显示一秒钟.
我用Google搜索并看到了Thread.Sleep – 但人们说定时器会更好.
我如何用计时器做到这一点?
谢谢!

@R_404_323@

  1. float WaitTimeToShowCard = 0;
  2.  
  3.  
  4. public void Update(GameTime gametime)
  5. {
  6.  
  7. if (HasToShowCard ())
  8. {
  9. WaitTimeToShowCard = 1;
  10. }
  11.  
  12. if (WaitTimeToShowCard >0)
  13. {
  14. WaitTimeToShowCard -= (float) gametime.Elapsed.TotalSeconds;
  15. if (WaitTimeToShowCard <=0)
  16. {
  17. WaitTimeToShowCard = 0;
  18. ShowCard();
  19. }
  20. }
  21. }

要么

  1. public class Timer
  2. {
  3. public Action Trigger;
  4. public float Interval;
  5. float Elapsed;
  6.  
  7. Timer() {}
  8.  
  9. public void Update(float Seconds)
  10. {
  11. Elapsed+= Seconds;
  12. if (Elapsed>= Interval)
  13. {
  14. Trigger.Invoke();
  15. Destroy();
  16. }
  17. }
  18.  
  19. public void Destroy()
  20. {
  21. TimerManager.Remove(this);
  22. }
  23.  
  24. public static void Create(float Interval,Action Trigger)
  25. {
  26. Timer Timer = new Timer() { Interval = Interval,Trigger = Trigger }
  27. TimerManager.Add(this);
  28. }
  29. }
  30.  
  31.  
  32. public class TimerManager : GameComponent
  33. {
  34. List<Timer> ToRemove = new List<Timer>();
  35. List<Timer> Timers = new List<Timer>();
  36.  
  37. public static TimerManager Instance;
  38.  
  39. public static void Add(Timer Timer) { Instance.Timers.Add( Timer ); }
  40. public static void Remove(Timer Timer) { Instance.ToRemove.Add(Timer); }
  41.  
  42. public void Update(GameTime gametime)
  43. {
  44. foreach (Timer timer in ToRemove) Timers.Remove(timer);
  45. ToRemove.Clear();
  46. foreach (Timer timer in Timers) timer.Update( (float) gametime.Elapsed.Totalseconds);
  47.  
  48. }
  49. }
  50.  
  51.  
  52. public class Game
  53. {
  54. public void Initialize() { Components.Add(new TimerManager(this);}
  55. public Update()
  56. {
  57. if (HasToShowCard(out card))
  58. {
  59. Timer.Create(1,() => card.Show());
  60. }
  61. }
  62. }

猜你在找的C#相关文章