【问题标题】:XNA GameTime Windows PhoneXNA GameTime Windows 手机
【发布时间】:2013-12-13 23:12:18
【问题描述】:

我一直在关注微软网站上的教程,他们使用 GameTime 来跟踪一些事情。但是,当我创建一个新实例时,它不会开始计数,也没有像 .start() 这样的函数来启动计时器。当我运行游戏时,GameTime 中创建的对象 gameTime 对于里面的每个元素都保持为 0。有谁知道如何正确使用 GameTime,因为很明显,我做错了 ;)

-谢谢

【问题讨论】:

  • 我个人一直使用异步/多线程绘图操作,从未见过需要 GameTime 类。

标签: c# windows-phone-7 xna


【解决方案1】:

您不应创建GameTime 类的实例,而应使用gameTime 提供给Game 类的Draw()Update() 方法的参数:

TimeSpan totalGameTime = gameTime.TotalGameTime;

关于 Windows Phone 7 的一个很好的参考是 Programming Windows Phone 7,Charles Petzold 的免费电子书。

【讨论】:

  • 即使我把 TimeSpan totalGameTime = gameTime.TotalGameTime;在我的 OnUpdate 函数中,totalGameTime 仍为 00:00
  • @that_guy 用于固定时间范围:第 1 帧应该读取 0。第 2 帧可能读取 0。第 3 帧读取 ~0.016。第 4 帧它读取 ~0.032... 等等.. 等等。
【解决方案2】:

想通了,因为这是特定于 windows phone,你必须使用内置的 GameTimerEventArgs。谢谢大家的帮助。

【讨论】:

  • 这与您最初的问题不同。如果您在处理特定事件时遇到问题,您应该在问题中提及这一点。
【解决方案3】:

我使用此代码为 XNA wp 游戏倒计时。我认为这也可以在普通 XNA 中使用 GameTimer 用于倒计时和计时。

GameTimer gameTime = new GameTimer();
int _timer = 5;
// initiate
gameTime.UpdateInterval = TimeSpan.FromSeconds(1);  // game time count every second
gameTime.Update +=new EventHandler<GameTimerEventArgs>(gameTime_Update);  // each time count, will exeute gameTime_Update method.
// each time execute, will decrease _timer by 1
void gameTime_Update(object sender, GameTimerEventArgs e)
{
            _timer-= 1;
}
// on function OnNavigatedTo, after 
timer.Start();  // this is default
gameTime.Start();   // this what I add.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多