XNA运行时间不会';t更新
本文关键字:更新 运行时间 XNA | 更新日期: 2023-09-27 17:57:42
我正试图在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
}
}
很抱歉,我相信原始的代码片段已经足够了。我在网上读到一些页面,人们发布了计时器的例子,并使用了我上面使用的方法。我理解这里的一些评论,即更新速度足够快,因此运行时间将始终为0。
您没有使用正确的GameTime。zombieTime永远不会被任何东西更新,所以它将永远为零。您想要使用的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);
}
http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.gametime_members.aspx
游戏运行时间是自上次更新以来的时间。累计游戏时间中的总游戏时间。。。
所以,除非你做了很多没有显示的工作,否则你根本不会花时间更新,所以0的值是非常合理的
试着把睡眠声明塞进去,看看经过的时间是否增加了。