C# XNA 总是运行缓慢

本文关键字:运行 缓慢 XNA | 更新日期: 2023-09-27 18:24:26

using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
namespace proj
{
    public class game : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        public static SpriteBatch sprite_batch;
        public static Texture2D texture;
        public game()
        {
            graphics = new GraphicsDeviceManager(this);
        }
        protected override void Initialize()
        {
            graphics.PreferredBackBufferWidth = 300;
            graphics.PreferredBackBufferHeight = 300;
            graphics.ApplyChanges();
            Content.RootDirectory = "Content";
            sprite_batch = new SpriteBatch(GraphicsDevice);
            texture = Content.Load<Texture2D>("a"); // 1 x 1, white
            base.Initialize();
        }
        protected override void Update(GameTime game_time)
        {
            base.Update(game_time);
        }
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.Black);
            sprite_batch.Begin();
            if (gameTime.IsRunningSlowly)
            {
                sprite_batch.Draw(texture,
                    new Rectangle(50, 50, 200, 200), Color.OrangeRed);
            }
            sprite_batch.End();
            base.Draw(gameTime);
        }
    }
}

对我来说,橙色方块几乎一直可见,但几乎没有发生任何事情。

60 什么

都不更新,60 什么都不画,进行 120 个几乎空的函数调用应该发生,他们有整整一秒钟的时间来完成程序,以免程序"运行缓慢",但gameTime.IsRunningSlowly几乎一直True返回。

我确定我的计算机足够快,可以更好地处理这个问题,这是怎么回事?我需要能够使用gameTime.IsRunningSlowly,如果它不能正常工作,我就不能。

C# XNA 总是运行缓慢

什么都不做。问题会神奇地自行解决!

说真的,IsRunningSlowly不应该骗你。在基本游戏项目中,除非系统资源稀缺,否则它永远不应该返回 True。如果它一直返回 True,那么我建议看看其他进程正在运行。

IsRunningSlowly是从一开始就存在的XNA框架功能之一,虽然有可能发现一些边缘情况暴露了一些奇怪的错误,它报告不正确,但这不太可能。

我建议重新启动PC,然后重试。如果问题仍然存在,您将不得不开始检查其他进程在启动时使用系统资源或评估您当前的硬件设置(并且您不需要太多空游戏项目以 60 FPS 运行,XNA 默认值(

将此行添加到 game(( 构造函数中。这应该使游戏调用更新尽可能频繁。

                 this.IsFixedTimeStep = false;

我有完全相同的问题。 游戏运行缓慢,但实际上没有使用PC的资源我在我的代码中注意到我被游戏启动拖累了。 它会落后一秒钟并留在那里。 这很难调试,因为像断点这样的任何东西都会触发游戏运行缓慢的字段。

我最终通过使用外部计时器并将其与游戏中的计时器进行比较来追踪问题。 我有这样的结果

游戏内/实时1/25/610/11

所以游戏在开始时输了一秒钟,但随后运行良好。

很可能有一种正确的方法来启动游戏和加载资源,这可以避免这个问题