第2节 轮询机制和帧率——XNA4.0 2D游戏开发入门教程

新建项目(我起名为“Smartoys”)后,VS中出现一个新的解决方案,里边有两个项目,如图所示:

XNA新项目

可以看到,一个是Smartoys项目,一个是SmartoysContent项目,前者用于保存解决方案的代码,后者用于提供资源,比如图片、声音等。

我有个习惯,那就是新建一个没接触过的东西的项目后,立刻会点击编译运行按钮,这时出现这样的窗口:

XNA新项目运行

窗口中什么都没有,只有浅蓝色的背景,至此,一个XNA“游戏”项目新建成功。

结束调试,回头看看代码,就会看到大概是这个样子的代码,我把我的解释写在注释里,大家看看:

    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        //不用管
        SpriteBatch spriteBatch;
        //绘制图片用的东西,以后经常接触到

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }
        //构造方法,暂时不用管

        protected override void Initialize()
        {
            // TODO: Add your initialization logic here

            base.Initialize();
        }
        //初始化方法,跟构造器差不多

        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
        }
        //在Initialize方法后被调用,也没什么意思
        protected override void UnloadContent()
        {
            // TODO: Unload any non ContentManager content here
        }
        //没什么用
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

            // TODO: Add your update logic here

            base.Update(gameTime);
        }
        //Update方法是一个关键方法,用于每帧更新游戏数据
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            //修改这里的Color.***参数,就可以改变背景颜色
            // TODO: Add your drawing code here

            base.Draw(gameTime);
        }
        //Draw方法是一个关键方法,用于每帧绘制游戏画面
    }

这里,Update和Draw是关键方法,前者用于更新游戏数据,后者用于绘制画面,虽然可以把所有的代码都放进其中一个方法里,但我还是建议分开写比较好。除了构造器以外的其他的方法,我学的时候没觉得有什么用。

XNA框架使用的是轮询机制,也就是每帧调用一次Update和Draw,Update负责修改需要修改的数据,而Draw则把画面擦除,然后重新画。

默认帧率是60fps,开发人员可以修改,但是在电脑上开发一般不修改,想修改的话就用以下代码:

TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 50);
//放在Game1构造器的末尾

现在改成了50微秒刷新一次,也就是20fps。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jether

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值