【问题标题】:XNA Elapsed time doesn't updateXNA 已用时间不更新
【发布时间】:2013-02-05 19:12:17
【问题描述】:

我正在尝试在我的 XNA 游戏中实现一个简单的计数器。认为这很简单。我有以下代码:

    elapsed = gameTime.ElapsedGameTime.TotalMilliseconds;
        timer -= (int)elapsed;

        if (timer <= 0)
        {
            timer = 10;   //Reset Timer
        }

但经过的时间从 0.0 开始不会改变。我在这里遗漏了一些明显的东西吗?我怀疑我是。我在顶部声明了 gameTime 并像往常一样初始化。

按照要求,这里还有一些代码:

公共类 Game1:Microsoft.Xna.Framework.Game {

private GameTime zombieTime; 



    public Game1()
    {
        zombieTime = new GameTime();
        // Other (unrelated) stuff here
    }



    protected void AddZombie()
    {
        elapsed = zombieTime.ElapsedGameTime.TotalMilliseconds;
        timer -= (int)elapsed;

        if (timer <= 0)
        {
            timer = 10;   //Reset Timer
            Zombie zombie = new Zombie(ScreenWidth, ScreenHeight, random);
            zombie.LoadContent(this.Content, "ZombieSprites/ZombieLeft1");
            zombies.Insert(0, zombie);
        }
     }

    protected void Update()
    {
        AddZombie();
        // Other game update stuff here
    }
}

对不起,我相信原始代码 sn-p 就足够了。我在网上阅读了一些页面,人们发布了计时器的示例,并使用了我上面使用的方法。我了解这里提出的一些关于更新速度足够快的 cmets,因此经过的时间将始终为 0。

【问题讨论】:

  • 你有那个代码......在哪里?是什么让它执行?
  • 代码在更新方法中。它在每次更新时运行。
  • 看起来在您经过的时间上没有调用 start - 我们可以再看一点代码吗?

标签: c# xna


【解决方案1】:

您没有使用正确的 GameTime。僵尸时间永远不会被任何东西更新,所以它总是会被归零。您要使用的 GameTime 已为您传递到 Update() 函数中。

正确的做法是这样的:

protected void AddZombie(GameTime gameTime)
{
    float elapsed = gameTime.ElapsedGameTime.TotalMilliseconds;
    timer -= (int)elapsed;

    if (timer <= 0)
    {
        timer = 10;   //Reset Timer
        // Rest of stuff goes here
    }
}

protected void Update(GameTime gameTime)
{
    AddZombie(gameTime);
}

【讨论】:

  • Duhhh... 有道理。非常感谢! :) 还有其他所有帮助过的人
【解决方案2】:

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.gametime_members.aspx

经过的游戏时间是自上次更新以来的时间。累计游戏时间中的 TOTAL game time...

所以,除非你做了很多你没有展示的工作,否则你根本不会花时间去更新,所以值 0 是相当明智的

尝试在其中插入一个 sleep 语句,看看经过的时间是否增加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2021-10-02
    相关资源
    最近更新 更多