博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XNA Game 类方法执行顺序和移动的图片,Windows Phone 游戏开发
阅读量:6704 次
发布时间:2019-06-25

本文共 2003 字,大约阅读时间需要 6 分钟。

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
( @"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 内容}

所在专辑:

原文地址:

转载于:https://www.cnblogs.com/zoyobar/archive/2012/09/25/xna-execute-order.html

你可能感兴趣的文章
用Python开源机器人和5美元,我在Instagram上搞到了2500个真粉儿
查看>>
《树莓派开发实战(第2版)》——2.9 利用RDP远程控制树莓派
查看>>
Amazon桌面云和X9桌面云的比较
查看>>
利用Nginx做负载均衡
查看>>
CentOS 7 本地yum源配置
查看>>
python 将unix文件转成dos文件
查看>>
ORA-01114: IO error writing block to file
查看>>
javascript 使用btoa和atob来进行Base64转码和解码
查看>>
让Windows7更安全 不得不知的帐户设置
查看>>
设计模式系列-享元模式
查看>>
电子课本的未来
查看>>
CactiEZ中文版10.1正式发布
查看>>
Linux命令之top
查看>>
中断和异常
查看>>
字符串的处理2
查看>>
android - 自定义(组合)控件 + 自定义控件外观
查看>>
关于subpartition(hash)在表空间中的分布
查看>>
java 对象序列化
查看>>
我的友情链接
查看>>
51次课(设置更改root密码、连接mysql、mysql常用命令)
查看>>