辅助类-read.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
辅助类-read

第三章:辅助类 3.0概览 在Helper命名空间,我通常放许多有用的小工具和类,这些类随着时间的过去变得相当有用。对于一个单一的工程项目,它可能不是最重要或最有价值的代码,但是因为它能被一遍又一遍的使用,无论引擎的其他部分是否改变,助手类将是你的引擎和工程项目里最稳固的部分。大多数助手类不处理太多的游戏程序,并且对其他工程项目甚至网站都有用。 你正好看过前面的章节,你不借助任何助手类就能写一个完整的游戏,甚至根本不用任何额外的文件或类。但是当工程项目变得越来越大,你将会看到有许多重复的样式和相似的问题发生,这些问题过去已经被解决过了。通常,在XNA中大多数重用的功能是图形组件。在下一章节,特别是本书的第二部分,你学到更多关于游戏组件和图像引擎。因为现在这个章节保持聚焦在非常基本的功能,如记录信息,访问游戏内容,做有效的单元测试,怎样产生随机数,以及许多其他较小的问题。 为了让这一章有一点让人更兴奋,你也创建下一个小游戏,只是为了娱乐。不是所有的助手类将被使用,但是build一个游戏引擎不是一个简单的任务。因为这个原因,本章和下一章从助手类和游戏组件开始,这样在本书第二部分中开发你的图像引擎就会容易一点儿。请注意我没有用这种方式编写本章呈现的辅助类;它们是过去几年进化过程中的产物。如论何时需要它们,只要添加功能或者你自己的助手类。如果你一旦解决一个问题,并且认为它可能不会再次有用,只要移除它的位置。但是如果你发现自己多次拷贝方案到一个新的工程项目,或者也许是另一个类,你应该认真考虑提取逻辑并且把它们放到一个特殊的类。 另外,您将学习到更多有关前几章中使用过的内容管道的知识,来支持Xbox 360。直接加载纹理或者shader,而不使用内容管道也可行,但是所有这些方法只能工作在windows平台。如果你想要创建一个跨平台游戏,你应该确保一切编译和工作在windows平台和Xbox 360平台都正常。贯穿本书你将持续这么做。 本章节末尾,你将快速开发一个有趣的Breakout克隆游戏。它比前面章节简单得多,因为你将首先编写所有的辅助类。例如,借助SpriteHelper 类渲染精灵是非常容易的。在下一章节,你能找到更多的辅助类和游戏组件来改进Pong游戏和Breakout游戏。 3.1掌握内容管道(Content Pipeline) 就像你在第一章学到的,内容管道通常用来导入游戏资源,诸如纹理、shaders、阴影和声音文件。不像任何其他非Visual Studio(或 XNA Studio)支持的文件,你只要把添加它们到工程项目,内容文件会被处理,并且然后会被编译为二进制内容文件,这些文件能被你的游戏加载(见图3-1)。 在过去游戏编程不得不编写自己的导入器来加载游戏内容数据或者使用一种可利用的格式,诸如在DirectX中.x 文件格式的模型文件。但是常常,这种可利用的格式是不能胜任的,太慢,或者当试着给游戏添加新特性时就是不可更改。这是为什么几乎每一款商业游戏都有自己的文件格式的原因,并且在其后台自定义逻辑编程。只有游戏开发者知道内部格式的规划是有益处的,并且他们能所心所欲地经常扩展或改变它。但是,在游戏中要用这种途径得到内容,通常有许多工作要做。加载纹理通常不是那么复杂,因为有许多库存在,并且即使当你编写自己的文件格式,它基本上也只包含被作为24bit或32bit色彩值储存的像素。如果你试图使用压缩或者硬件压缩纹理,诸如DXT格式,就变得有点儿难了,但是DirectX 有一整套的有用方法来协助你处理。 另一方面,加载3D模型数据要复杂得多,特别是在XNA,在这里你不仅必须要有几何数据,而且渲染一个3D对象需要数个shader,然后当然,材质数据将告诉着色器shader它的颜色、纹理以及一些要用到的参数。在DirectX中,大多数指南和范例只是使用.x文件格式,但是.x格式可能对于许多工程项目还不够胜任。尤其是,你如果使用normal napping(法线圆锥曲面叶)和需要包含切线的几何数据,.x文件将不是非常有用了。你将不得不在你的应用程序中产生切线,并且这样做还可能引入运行问题。例如,我的一个老游戏,Rocket Commander,就有这个问题,并且它需要一个复杂的模型加载过程和切线再生过程。 其他游戏数据像加载声音文件(.wav),shader(.fx),或者自定义数据(例如.xml)可能是简单的,因为你的游戏或者你正在使用的框架提供了充分的帮助类来快速加载这一切,但是然后,在另一个平台运行同样内容的游戏,你可能遇到问题。例如,你可能在Windows 平台使用ACPCM声音文件,并且使用编译过的Pixel Shader 1.1 文件,或者只是加载一对 .jpg 文件作为纹理,但是在Xbox 360上不支持ACPCM ;

文档评论(0)

wangsux + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档