炸弹没有';I don’我不想在什么时候得到它
本文关键字:我不想 什么时候 don 炸弹 | 更新日期: 2023-09-27 18:19:48
我有一个用XNA/C#为Windows手机制作的游戏,现在我决定添加一个炸弹来帮助玩家。
现在我已经设置了一个定时器和一个bool,这样每个级别只能使用一个炸弹。
但是,游戏一开始,炸弹就已经在那里了!我认为计时器不工作。
bool canDrawBomb = false;
public static Texture2D bomb;
GameTimer bombTimer = new GameTimer();
protected override void Initialize()
{
// Bomb timer.
bombTimer.UpdateInterval.Add(new TimeSpan(50000));
bombTimer.Update += bombTimer_Update;
bombTimer.Start();
base.Initialize();
}
void bombTimer_Update(object sender, GameTimerEventArgs e)
{
canDrawBomb = true;
bombTimer.Stop();
}
protected override void LoadContent()
{
bomb = Content.Load<Texture2D>("Bomb");
}
protected override void Draw(GameTime gameTime)
{
if (canDrawBomb)
{
// Draw the bomb.
// TESTED: OK. The bomb can draw but not at right time.
spriteBatch.Draw(bomb, new Vector2(), Color.White);
}
}
现在的问题是,即使我已经将bombTimer设置为啊50秒,它仍然会在游戏一开始就打平!
我该怎么解决这个问题?我已经做了好几个小时了,这让我发疯了。我不知道我做错了什么!
以下行将不会更改间隔属性(因为TimeSpan.Add()
方法会进行新的复制,所以不会更改现有的TimeSpan):
bombTimer.UpdateInterval.Add(new TimeSpan(50000));
只需使用
bombTimer.UpdateInterval = new TimeSpan(50000);
我怀疑GameTimer.Update事件在调用GameTimer.Start()后立即启动。添加一个计数器变量,在第二次调用时仅将canDrawBomb
设置为false(在第二个调用时仅禁用计时器)
或者使用DispatcherTimer(如果在XNA中可用),它肯定不会在Start
调用中激发。