代码改变世界

《XNA游戏开发》Game1类的方法与字段

2011-10-17 12:18  张剑  阅读(558)  评论(0编辑  收藏  举报

《XNA游戏开发》简介

《XNA游戏开发》Game1类的方法与字段

《XNA游戏开发》在战机游戏中使用Decorator模式

在上一篇内容中,我们了解到建好项目后生成的Game1类是继承自Microsoft.Xna.Framework.Game类型,然后再重写其中的方法,也就是说,我们的游戏主体这个Game1并不一定非要是这样的命名,当然你可以更改一个其他的名字,但是在改类名后,对应的在Program类的Main法中new的对象得相对应的变更为你改过的类型。

一、Game1中的字段:

GraphicsDeviceManager graphics;

SpriteBatch spriteBatch; 

其中GraphicsDeviceManager为绘制界面管理类型。

SpriteBatch 为精灵处理类型(绘制处理类型)。

 

二、构造方法:

  1. public Game1() {  
  2.     graphics = new GraphicsDeviceManager(this); //初始化为界面管理对象
  3.     Content.RootDirectory = "Content";  //设置内容读取的目录

 

构造方法中:将graphics对象先创建出来,并规定Content的目录在Content文件夹之下。

三、Initialize方法:

  1. protected override void Initialize() {  
  2.      base.Initialize();  

 

作用:改写原父类型的初始方法。

说明:因为Microsoft已经把繁复的初始内写在父类型当中变得相当简化,直接调用base(基底类型)使用即可所以可以让我们专心在游戏重点的初始化。

也就是说,Microsoft为我们提供可更改初如化的机会。

 

四、LoadContent方法:
 
  1. protected override void LoadContent() {  
  2.     spriteBatch new SpriteBatch(GraphicsDevice);  
作用:在游戏启动时加载资源,如声音、图片、3D模型、字体等。
说明:方法中根据GraphicsDevice(绘制界面)创建了spriteBatch(绘制处理)对象。同时可以看到,在LoadContent方法中,并没有Base.LoadContent()方法,因为父类为Game基础来,在该类中并不需要去加载游戏资源,只有在我们制作游戏时才需要加载资源。
 
五、UnloadContent方法:
 
  1. protected override void UnloadContent() { ... } 
 该重写方法是用来回收内容。在关闭游戏时,需要将游戏资源释放掉可以在该方法中完成。
 
六、Update方法:
 
  1. protected override void Update(GameTime gameTime) {  
  2.     if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)  
  3.         this.Exit();     
  4.     base.Update(gameTime);  

作用:重写了逻辑更新的方法。

其中:GameTime对象可以取得游戏时间。

GamePad对象可以得知玩家1是否按下了倒退键而退出游戏。

七、Draw方法:

  1. protected override void Draw(GameTime gameTime) {  
  2.     GraphicsDevice.Clear(Color.CornflowerBlue);  
  3.         base.Draw(gameTime);  

作用:重写了绘制游戏的部分。

说明:使用GameDevice对象Clear方法,把画面清成淡蓝色,同时也调用父类型进行运作。

八、注意Update与Draw方法:

 

1.Update跟Draw会连续进行每秒钟60HZ的更新速度来跑动游戏。

2.其他几个方法,分别为游戏启动时或关闭时进行调用。

3.如果我们想控制游戏的速度,可以通过Update中的GameTime定义

 

通过以上介绍,大概对XNA框架中,一些基本类及方法的作用及说明有了简单的了解。在以后的内容中,我们再详细介绍每个方法中如何编写代码,实现游戏的运行。