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。

  • 相关阅读:
    Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(六)之Initialization & Cleanup
    ValidForm.js的使用注意点
    我的第一个敏捷项目总结
    七月在线机器学习项目
    吴恩达机器学习
    emoji情感分类器
    序列模型实践工程
    序列模型-NLP和词嵌入
    吴恩达深度学习
    序列模型
  • 原文地址:https://www.cnblogs.com/AlexCheng/p/2120205.html
Copyright © 2011-2022 走看看