炸弹没有';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秒,它仍然会在游戏一开始就打平!

我该怎么解决这个问题?我已经做了好几个小时了,这让我发疯了。我不知道我做错了什么!

炸弹没有';I don’我不想在什么时候得到它

以下行将不会更改间隔属性(因为TimeSpan.Add()方法会进行新的复制,所以不会更改现有的TimeSpan):

  bombTimer.UpdateInterval.Add(new TimeSpan(50000));

只需使用

  bombTimer.UpdateInterval = new TimeSpan(50000);

我怀疑GameTimer.Update事件在调用GameTimer.Start()后立即启动。添加一个计数器变量,在第二次调用时仅将canDrawBomb设置为false(在第二个调用时仅禁用计时器)

或者使用DispatcherTimer(如果在XNA中可用),它肯定不会在Start调用中激发。