我只是想知道,在制作游戏时,我注意到当我的游戏具有焦点时(就像它应该的那样),IsRunningSlowly 的 GameTime 值返回 false,但是当我更改应用程序时,它会更改为 true。我什至制作了一个空游戏,即使它失去焦点,IsRunningSlowly 的 GameTime 值也会返回 true。我想知道为什么它会这样做?这只是我的电脑的问题,还是 XNA 的创建者就是这样设计的?帧速率看起来不错,但值是真实的。其实没什么大不了的,我只是很好奇!
[空游戏]
public class Game1 : Microsoft.Xna.Framework.Game
{
#region Constuctors
public Game1()
{
this.GraphicsManager = new Microsoft.Xna.Framework.GraphicsDeviceManager(this);
this.Content.RootDirectory = "Content";
}
#endregion
#region Overrides
protected override void LoadContent()
{
this.SpriteBatch = new Microsoft.Xna.Framework.Graphics.SpriteBatch(this.GraphicsDevice);
base.LoadContent();
}
protected override void Update(Microsoft.Xna.Framework.GameTime GameTime)
{
System.Console.WriteLine(GameTime.IsRunningSlowly);
Microsoft.Xna.Framework.Input.KeyboardState Keyboard = Microsoft.Xna.Framework.Input.Keyboard.GetState();
if (Keyboard.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Escape)) this.Exit();
base.Update(GameTime);
}
protected override void Draw(Microsoft.Xna.Framework.GameTime gameTime)
{
GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.CornflowerBlue);
base.Draw(gameTime);
}
#endregion
#region Variables
private Microsoft.Xna.Framework.GraphicsDeviceManager GraphicsManager { get; set; }
private Microsoft.Xna.Framework.Graphics.SpriteBatch SpriteBatch { get; set; }
#endregion
}
我会尝试回答这个问题,而不是发布“事情就是这样”。
XNA 线程在失去焦点时会休眠。它是在XNA的游戏类中配置的。
InactiveSleepTime = new TimeSpan(0);
默认设置为 20ms,设置为 0 将使 XNA 在失去焦点时全速运行。
IsRunningSlowly 设置为 true,因为帧速率降至 60 以下(这是设置 IsFixedTimeStep 时的默认值)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)