`
feipigwang
  • 浏览: 769915 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

XNA基础(01) —— 游戏循环

 
阅读更多

当安装好了VS 2008和XNA GameStudio 3.0后,我们就可以开始学习XNA了。

首先,在VS 2008中新建一个XNA GameStudio 3.0项目(选择Windows Game类型),会生成一个最简单的、可运行的游戏模板。

接下来我们将注意力转移到我们要剖析的重点—— 从Microsoft.Xna.Framework.Game继承的Game1类,其代码如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->publicclassGame1:Microsoft.Xna.Framework.Game
{
GraphicsDeviceManagergraphics;
SpriteBatchspriteBatch;

publicGame1()
{
graphics
=newGraphicsDeviceManager(this);
Content.RootDirectory
="Content";
}

protectedoverridevoidInitialize()
{
base.Initialize();
}

protectedoverridevoidLoadContent()
{
spriteBatch
=newSpriteBatch(GraphicsDevice);
}

protectedoverridevoidUnloadContent()
{
}

protectedoverridevoidUpdate(GameTimegameTime)
{
if(GamePad.GetState(PlayerIndex.One).Buttons.Back==ButtonState.Pressed)
this.Exit();

base.Update(gameTime);
}

protectedoverridevoidDraw(GameTimegameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);

base.Draw(gameTime);
}
}

我们简单解释一下该类中所用到的重要类型。

GraphicsDeviceManager 图形设备管理器,用于访问图形设备的通道。

GraphicsDevice 图形设备。

Sprite 精灵,绘制在屏幕上的的2D3D图像,比如游戏场景中的一个怪兽就是一个Sprite

SpriteBatch 它使用同样的方法来渲染一组Sprite对象。

而Microsoft.Xna.Framework.Game 这个基类就像是一个基础框架,它把整个游戏流程串联了起来,即,整个游戏会按如下流程运转。

该图中的五个方法正好对应着Game1类中的五个方法,它们的作用解释如下。

Initialize方法用于初始化与游戏相关的对象,比如初始化图形设备、游戏环境设置等。

LoadContent方法在Initialize方法之后调用,它用于加载游戏所需要的图形或其它素材,比如模型、图片、声音等。

UpdateDraw方法构成了游戏循环

Update方法用于改变和控制游戏的状态,主导着游戏逻辑的进行。

Draw方法用于在屏幕上绘制我们的场景、Sprite。要注意的是,我们应该尽可能少的在Draw方法中处理游戏逻辑——它们应该在Update方法中被处理。Draw方法仅仅负责绘制。

UpdateDraw方法都接受一个GameTime类型的参数,GameTime有什么作用了?这个参数可以帮助我们依据实际的游戏时间而不是处理器的速度来决定动画或其它事件的发生时刻。

在这个最简单的例子中,游戏将以默认的60fpsFrame/Second)运行。

UnloadContent方法在游戏结束时被调用,该方法用于卸载在LoadContent方法中所加载的素材和那些需你要进行特别处理的善后事宜。

状态轮询与事件监听

写过Windows应用程序的朋友都知道,当用鼠标点击Form上的一个Button时,会触发一个Click事件,而我们的应用程序通过监听到事件的发生进而来处理事件。

而在游戏开发中,我们需要将我们的这种“事件”思维切换到“轮询”思维。也就是说,游戏中,用户的鼠标、键盘操作并不会触发相关的事件。如果是这样的话,那我们该如何知道用户是否按下了鼠标了?答案是我们需要在游戏循环中(确切的说是在Update方法中)不断地检测输入设备(比如鼠标)的状态来进行判断。

这就是轮询机制与事件机制的区别,也是游戏开发和普通windows应用开发需要转换思路的地方。

归根到底,windows事件机制也是对轮询机制(即Windows消息循环)的一个封装

今天的介绍就到这里,下一节我们将介绍与渲染相关的基础知识。

最后,附上XNA GameStudio 3.0的下载地址:http://creators.xna.com/en-us/xnags_islive

分享到:
评论

相关推荐

    XNA小游戏(是男人就坚持一百秒)

    【XNA小游戏——“是男人就坚持一百秒”】是一个基于微软XNA框架开发的趣味游戏,它挑战玩家的反应速度和耐力。XNA是一个为游戏开发者提供的一套工具和框架,允许开发者使用C#编程语言来创建跨平台的游戏,包括...

    xna的2d的用大炮打飞碟的游戏

    在本文中,我们将深入探讨如何使用Microsoft的XNA框架创建一个2D游戏——“大炮打飞碟”。XNA是一个强大的工具集,专为游戏开发者设计,尤其适合初学者入门。通过XNA,我们可以利用C#编程语言构建跨平台的游戏应用,...

    XNA开发2D开车范例

    《XNA开发2D开车范例》是一款专为初学者设计的编程实例,它利用微软的XNA框架,为开发者提供了一个2D游戏——开车游戏的实现基础。在这个实例中,我们将深入探讨XNA框架的核心概念,游戏循环,以及如何在2D环境中...

    XWinForm——XNA虚拟WinForm窗体

    XWinForm的工作原理是,在XNA应用程序中创建一个虚拟的WinForm层,这个层可以在XNA渲染循环中与游戏画面一起更新。这样,开发者就可以在保持游戏性能的同时,利用WinForm控件来创建菜单、设置面板或者其他任何需要...

    XNA2.0的简单小游戏打乒乓

    XNA2.0是早期版本,提供了基础的游戏开发工具和技术,适用于Windows和Xbox 360平台。 描述中提到“看哈学习XNA的第一个例子:怎么做2D游戏!”暗示这是一个入门级的教程项目,目的是教授如何利用XNA来创建2D游戏。...

    Learning XNA3.0

    1. **XNA框架基础**:首先,书会介绍XNA的基本架构和工作原理,包括Content Pipeline(内容管道)——一个用于处理和加载游戏资源的系统,以及Game Loop(游戏循环)——游戏程序的核心运行机制。 2. **C#编程基础*...

    .NET游戏编程入门经典—— C#篇

    《.NET游戏编程入门经典——C#篇》是一本专为初学者设计的教程,旨在帮助读者快速掌握使用C#语言进行游戏开发的基础知识。本书深入浅出地讲解了.NET框架下C#语言在游戏编程中的应用,为有志于进入游戏行业的程序员...

    XNA高级编程:Xbox 360和Windows

    此外,还会讨论XNA的四大核心类——Game、GraphicsDeviceManager、SpriteBatch和SpriteFont,这些都是构建游戏的基础。 第二章“创建你的第一个游戏Pong”是实践操作的起点,通过实现经典的乒乓球游戏,读者可以...

    xna源码(游戏打砖块的源码)

    本篇文章将深入探讨一款基于XNA框架、使用C#语言编写的经典游戏——“打砖块”的源码,旨在帮助读者理解游戏开发中的基本概念和力学碰撞的实现。 首先,XNA框架的核心在于它的四个主要组件:Content Pipeline(内容...

    xna 爆炸效果 源码

    Game Class(游戏类),作为游戏循环的基础;以及Device Classes(设备类),如GraphicsDevice(图形设备)和SoundDevice(声音设备)等,用于与硬件进行交互。 在实现2D爆炸效果时,我们通常会涉及到以下几个关键...

    Professional.XNA.Game.Programming

    《Professional XNA Game ...通过这两本电子书的学习,开发者不仅可以掌握XNA框架的使用,还能建立起扎实的游戏开发基础,进一步提升自己的游戏编程能力。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。

    XNA动画示例(人物行走)

    《XNA动画示例——深度解析人物行走机制》 XNA框架是一款由微软开发的用于游戏开发的开源软件,它为开发者提供了强大的2D和3D图形渲染能力,以及音频处理和游戏输入等功能。在XNA中,动画是游戏开发中的重要组成...

    [.NET游戏编程入门经典——VB.NET篇]源代码

    《.NET游戏编程入门经典——VB.NET篇》是一本针对初学者的计算机编程书籍,主要讲解如何使用VB.NET语言进行游戏开发。这本书的源代码包含了书中各个章节的实例,为学习者提供了实践操作的机会,加深对.NET框架和VB...

    Beginning.XNA.2.0.Game.Programming

    - **Beginning.XNA.2.0.Game.Programming**:与标题相同,这部分描述进一步强调了书籍的主题——帮助读者从零开始学习使用XNA 2.0进行游戏编程。 #### 标签分析 - **ajax asp.net c# j2ee java**:虽然这些标签与...

    Direct3D_XNA_GameDesign_C#.rar

    2. **XNA框架**:了解XNA的四大核心组件——Content Pipeline(内容管道)、Game Loop(游戏循环)、Graphics Device Manager(图形设备管理器)和Audio(音频)系统,是掌握XNA的关键。开发者可以使用Content ...

    MS.Press.Microsoft.XNA.Game.Studio.4.0.Learn.Programming.Now

    ### XNA游戏工作室4.0:学习...总之,《MS.Press.Microsoft.XNA.Game.Studio.4.0.Learn.Programming.Now》是一本非常适合希望进入游戏开发领域的编程初学者和爱好者的书籍,不仅涵盖了编程基础知识...

    用C#做成的炸弹人游戏

    本文将深入探讨如何使用C#构建一个窗口式的小游戏——炸弹人游戏。炸弹人游戏是一款经典的动作冒险游戏,玩家控制的角色可以在地图上放置炸弹来炸毁障碍物并击败敌人。 【核心知识点】: 1. **C#基础知识**:C#是...

    MilesXNA v0.69 Beta Build 051216_milesxna051216.zip

    XNA框架提供了一整套用于创建2D和3D游戏的库,包括图形渲染、音频处理、输入管理以及游戏循环等核心功能。MilesXNA则是在XNA的基础上进行了扩展和优化,以适应更广泛的开发需求,尤其是在开源社区中,它允许开发者...

    C#写的勇者斗恶龙游戏源代码

    通过深入研究源代码,开发者可以了解到如何使用C#实现游戏逻辑,如何设计高效的数据结构来存储游戏状态,以及如何利用图形库(如DirectX或XNA)进行2D或3D图形渲染。此外,还可以学习到如何编写模块化代码,使游戏...

Global site tag (gtag.js) - Google Analytics