zoukankan      html  css  js  c++  java
  • XNA 3.0初步——开始第一个XNA 3.0项目

    问题

    你想编写一个新的XNA 3.0游戏。此外,默认的初始代码已经包含了一些方法,你想知道这些方法是做什么用的。

    解决方案

    打开一个新项目和大多数Windows程序是相同的。在XNA Game Studio 3.0中,打开File菜单,选择New→Project。

    工作原理

    打开XNA Game Studio 3.0 通过点击Start按钮并选择Programs打开XNA Game Studio 3.0,找到Microsoft XNA Game Studio 3.0,点击,选择Microsoft Visual Studio 2008 (或Microsoft Visual C# 2008 Express Edition,如果你安装的是免费版本)。

    打开一个新XNA 3.0项目在XNA Game Studio 3.0中,打开File菜单并选择New→Project。在左边的列表中,Visual C#下面的XNA Game Studio 3.0默认是高亮的,如图1-1所示。在右边,选择Windows Game (3.0),给你的项目起一个好听的名称,点击OK按键。

    1

    图1-1 打开一个新XNA 3.0项目(Visual Studio 2008版本)

    预定义方法

    当开始一个新项目时,你发现代码文件中已经包含了一些代码。注释(显示为绿色)占据了50%的代码帮助你开始编程。等会你就会发现这些方法非常有用,因为它们节省了你处理基本内容的时间。例如,当你运行这个程序时,会获得一个空的窗口,这意味着你无需将时间浪费在编写窗口或处理窗口信息队列上。

    下面讨论预定义的方法。

    Game1构造函数

    Game1方法只在运行项目的一开始调用一次。这意味着当这个方法(构造函数)被调用时内部组件还没有被初始化。添加在这里的唯一代码应该是GameComponent类的实例化(见教程1-6),这里你无法访问任何资源(诸如GraphicsDevice类),因为它们还没有被初始化。

    Initialize方法

    Initialize方法也只被调用一次,在所有内部初始化完成之后。这个方法可以放置初始化变量,诸如游戏中的物体的初始位置和初始速度等,你可以访问游戏对象的所有资源了。

    Update方法

    当运行程序时,XNA会以每秒60次的频率调用Update方法(或者说每隔0.0167秒)。更多的知识可参见教程1-6。所以Update方法中可以放置更新游戏逻辑的代码,可以是更新物体的位置,碰撞检测,在一个位置开始爆炸,增加得分等。还有,处理用户输入和更新相机/模型的矩阵也应该在这个方法中进行。

    Draw方法

    在这个方法中,你应该放置绘制场景的代码。它绘制所有的2D图像,3D物体,爆炸和显示当前得分等。默认情况下,Draw方法的调用频率与屏幕刷新率相同,这取决于屏幕或Zune设备,更多内容可参见教程1-6。

    LoadContent方法

    在游戏中你总要从磁盘加载素材(诸如图像,模型和声音等) 。要加速这个过程并拥有灵活性,XNA通过内容管道管理这个素材。应该在LoadContent方法中加载素材,这个方法在项目开始只被调用一次。如何将一张2D图像加载到XNA项目中的详细例子可参见教程2-1,其他类型的素材加载方法是相同的。

    UnloadContent方法

    如果游戏中使用的对象需要清除,理想的放置位置是在UnloadContent方法中,这个方法在游戏退出前被调用一次。

    添加一个.fx HLSL文件

    如果你想更深入一步在项目中添加一个HLSL文件,只需在 Solution Explorer找到Content,右击并选择Add→New Item,选择“Effect file,”并起一个名称。你会获得一些默认代码,可以用这本书中的其他代码扩展或替换这些代码。之后需要像其他素材一样导入这个文件:通过创建一个对应的变量并将这个文件连接到这个变量。将这个变量添加到Game类的顶部:

    Effect myEffect;

    然后在LoadContent 方法中将这个变量连接到代码文件上:

    protected override void LoadContent() 
    {
        myEffect = Content.Load<Effect>("effectFile");
    }

    注意:你必须将素材的名称改成你的HLSL文件的名称,本例中是effectFile。

  • 相关阅读:
    怎么查看京东店铺的品牌ID
    PPT编辑的时候很卡,放映的时候不卡,咋回事?
    codevs 1702素数判定2
    codevs 2530大质数
    codevs 1488GangGang的烦恼
    codevs 2851 菜菜买气球
    hdu 5653 Bomber Man wants to bomb an Array
    poj 3661 Running
    poj 1651 Multiplication Puzzle
    hdu 2476 String Painter
  • 原文地址:https://www.cnblogs.com/AlexCheng/p/2120205.html
Copyright © 2011-2022 走看看