Game 类

XNA 中的 Game 类的作用有点类似于我们熟悉的 main() 函数,是一个很重要的类。在 XNA 4.0 中,每一个游戏都需要一个派生自 Game 的类。

public class Game1 :
    Microsoft.Xna.Framework.Game
{
    // 这里省略了代码。
}

默认情况下在新建 XNA 项目之后,再带继承自 Game 的名为 Game1 的类。

Initialize 方法

Game 类的 Initialize 方法会首先执行(在本文所提到的方法中),在这个方法中可以初始化一些与游戏相关的数据,比如读取玩家的游戏进度等。

在下面的代码中,我们定义了一个浮点类型的字段 position,用来保存图片的位置,并且在 Initialize 中将它初始化为 10。

private float position;
protected override void Initialize ( )
{
    // TODO: 在此处添加初始化逻辑
    this.position = 10;

    base.Initialize ( );
}

LoadContent 方法

接下来将执行的是 LoadContent 方法,在这个方法中,我们载入游戏所需要的各种资源,比如:纹理图片,音乐,字体等。

正如下面的代码所示,我们在 LoadContent 方法中读取了用于测试的图片,并将它保存在 textImage 字段中,以便我们在其它方法中访问。

private Texture2D textImage;
protected override void LoadContent ( )
{
    // 省略了一些代码。
    // TODO: 在此处使用 this.Content 加载游戏内容
    this.textImage =
        this.Content.Load<Texture2D> (
        @"image/test"
        );
}

图片,我们已经在项目 sample-1Content 中添加。

Draw 方法

Draw 方法会在 LoadContent 执行之后反复执行(在平方测试游戏的过程中发现,Draw 方法会先于 Update 方法执行)。在这个方法中,需要将所有需要展示的内容绘制到屏幕上。

我们将已经读取过的图片通过 SpriteBatch 类绘制输出,其位置由 position 字段确定。

protected override void Draw ( GameTime gameTime )
{
    // 省略了一些代码。

    // TODO: 在此处添加绘图代码
    this.spriteBatch.Begin ( );
    this.spriteBatch.Draw (
        this.textImage,
        new Vector2 ( this.position, this.position ),
        Color.White
        );
    this.spriteBatch.End ( );

    base.Draw ( gameTime );
}

Update 方法

与 Draw 方法类似,Update 也会在 LoadContent 方法执行后,被反复调用。在这个方法中,我们需要对游戏的数据进行操作,比如改变位置,判断两个物体是否发生碰撞等。

在下面的方法中,我们调整了表示图片坐标的 position 字段,因此每一次 Update 被调用,图片的位置都会发生偏移,最后就有了图片被移动的效果。

protected override void Update ( GameTime gameTime )
{
    // 省略了一些代码。

    // TODO: 在此处添加更新逻辑
    this.position += 1;

    base.Update ( gameTime );
}

UnloadContent 方法

当游戏结束,或者设备发生了某种改变,需要重新载入资源的时候,将停止循环 Draw 和 Update,并调用 UnloadContent,之后将结束游戏或者重新调用 LoadContent。

在我们的示例当中,不需要对 UnloadContent 设置。

protected override void UnloadContent ( )
{
    // TODO: 在此处取消加载任何非 ContentManager 内容
}

所在专辑:http://throw.diandian.com/post/xna-base

原文地址:http://throw.diandian.com/post/xna-execute-order

版权声明:本文为zoyobar原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zoyobar/archive/2012/09/25/xna-execute-order.html