什么是Content
原文地址:http://msdn.microsoft.com/zh-cn/library/bb447756。
XNA Game Studio Content Pipeline是一组施加在游戏素材上的处理过程,这个过程从素材的原始文件格式开始,借助于XNA框架类库,通过一系列处理将素材转换为XNA Game Studio可以使用的数据。
Content是你的游戏中的所有非可执行的托管代码,它包括美术素材,例如纹理、sprite、mesh,effect和font;还包括声音素材,例如音乐或音效;数据也是Content,例如关卡的数据或角色的属性等。
大多数content是使用digital content creation (DCC)工具创建的,例如一个绘图程序或3D建模程序。你的游戏中使用的content的文件格式各不相同,大多数都是标准的文件格式,例如用于纹理的JPEG格式或用于模型的Autodesk FBX格式。但是,也有可能会使用自定义格式或将自定义数据以XML格式保存。
Content Pipeline(素材管道)的优点
使用Content Pipeline最主要的原因是让你的游戏运行得更快。如果不使用content pipeline,你的游戏就必须使用素材的原始文件格式。当需要加载素材并将它们绘制在屏幕上时,游戏就必须首先判断文件格式并将数据转换为它能够直接使用的形式,这个过程将在运行时进行,会影响游戏的运行速度。
使用Content Pipeline可以消除上述弊端,它将这个费时的工作移到生成游戏的时候。在生成时(build time),每个素材从原始文件格式被导入,然后被处理为一个托管代码对象,接着这些对象被串行化为一个文件包含在游戏的可执行文件中。
在运行时(run time),游戏可以直接从文件读取串行化后的数据并可立即使用。
这个架构还提供了另外的好处。
- 游戏美工可以使用自己喜欢的DCC工具。
- 程序员可以直接在XNA Game Studio项目中使用美工做好的文件。
- 如果所有游戏素材的文件格式可以被XNA Game Studio提供的标准Importer和Processor支持,那么程序员就无需考虑文件格式或者Content Pipeline的处理细节。
- 如果需要,Content Pipeline也可以很容易地进行自定义或扩展,这样就可以导入新的文件格式或者自定义导出类型。
使用Content Pipeline
对那些使用常见格式素材的XNA Game Studio游戏来说,没必要知道Content Pipeline的工作细节。XNA Game Studio为常见的DCC文件格式提供了标准的importer和processor,你唯一需要进行的工作就是将这些素材添加到游戏的content项目中。XNA Game Studio内置支持的格式请参见本文的后半部分。
例如要使用一个DirectX Effect (.fx)文件,只需将这个文件添加到XNA Game Studio游戏解决方案的content项目中。XNA Game Studio可以辨认.fx文件类型,然后施加正确的组件,当生成游戏时会使用这个组件处理这个文件。然后游戏就可以通过标准的ContentManager.Load方法访问到这个effect,而程序员无需关心Content Pipeline的细节步骤。
但是在以下情况中,你需要理解Content Pipeline工作原理。
- 第三方可以提供自定义的XNA Game Studio Content Pipeline组件支持其他素材格式。
- 你可以编写自己的XNA Game Studio Content Pipeline组件支持新类型的素材。
- 你想编写自己的XNA Game Studio Content Pipeline组件 components,用来在游戏生成时将一个content转换为一个特定用途的content。
Content Pipeline组件(Components)
根据XNA Game Studio Content Pipeline处理过程的执行时刻,它分为两种类型:生成时组件(build-time components)和运行时组件(run-time components)。
生成时组件(Build-Time Components)
当你在Visual Studio中生成游戏的可执行文件时, Content Pipeline的生成时组件会处理素材。这些处理过程将素材从原始的DCC格式转换为一个托管代码对象,游戏在运行时可以直接使用这个托管代码对象。
这些生成时组件使用的是XNA类库,而类库可以进行扩展用来创建自定义的Content Pipeline生成时组件。
组件 | 描述 |
---|---|
Importer | 导入器importer将素材从DCC文件格式转换为XNA Game Studio Content Document Object Model对象,而这个对象可以被标准的content processor处理,或者可以被自定义处理器处理的其他格式。 |
Content processor | 处理器processor 接受导入的特定类型的素材,例如一组mesh,然后将它们编译为托管代码对象,这些对象可以在Windows,Xbox 360或Windows Phone上被XNA Game Studio游戏加载和使用。 |
当你在content项目中导入素材文件时,它的Properties页会选择合适的importer和processor。当生成游戏时(按F5),就会自动调用每个素材对应的importer和processor,这些素材会转换为在运行时可以加载的形式,而这个加载操作是通过ContentManager.Load方法实现的。
运行时组件(Run-time Components)
XNA Game Studio Content Pipeline的运行时组件(run-time components)支持加载和使用转换过的素材。这些运行时组件使用的是XNA类库,而类库可以进行扩展用来创建自定义的Content Pipeline运行时组件。
标准Importer和Processor
原文地址:http://msdn.microsoft.com/zh-cn/library/bb447762。
Importers和content processors是以程序集(assemblies)的形式实现的,除了使用XNA自带的标准导入器和处理器,你还可以使用自己或第三方开发的自定义导入器和处理器。使用属性窗口可以对每个素材施加正确的导入器和处理器。
标准Importer
下表是XNA Game Studio自带的标准导入器的说明,所有标准导入器都声明在Microsoft.Xna.Framework.Content.Pipeline命名空间之下。
名称 | Type名称 | 输出类型 | 描述 |
---|---|---|---|
Autodesk FBX | FbxImporter | NodeContent | 导入Autodesk FBX文件格式(.fbx)的素材这个导入器可以导入由FBX exporter的2006.11版本导出的文件。 |
Effect | EffectImporter | EffectContent | 导入DirectX Effect文件格式(.fx)的素材。 |
Sprite Font Description | FontDescriptionImporter | FontDescription | 导入一个在.spritefont文件中指定的font description。 |
Texture | TextureImporter | TextureContent | 导入纹理。文件类型可以是:.bmp,.dds,.dib,.hdr,.jpg,.pfm,.png,.ppm和.tga。 |
X File | XImporter | NodeContent | 导入DirectX文件格式(*.x)的游戏资源。这个导入器使用左手坐标系。 |
XACT Project | N/A | N/A |
导入Microsoft跨平台音频创建工具(XACT)的文件类型的音频资源。 技巧 把.xap文件关联到XACT,可以使你在编辑任何.xap文件的时候自动打开XACT。
|
XML Content | XmlImporter | object |
导入XML用于在运行时编辑自定义对象的值。例如,你可以将XML代码传递到导入器查询自定义类型的指定属性并改变它的值。然后在一个处理器中转换这个自定义对象,或使用No Processing Required processor不做改变地传递到游戏中。 这个导入器被设计用来在运行时导入XML文件中的游戏数据(类似于Sprite Font Description导入器)或导入XML文件中的地形数据,然后使用这个数据在处理器中生成一个随机地形。 |
标准Content Processors
XNA Game Studio自带的处理器支持常见的素材类型,许多标准处理器,例如TextureProcessor,可以使用参数调整处理器的默认行为。
下表是标准处理器的说明和支持的素材类型。
名称 | Type名称 | 输入类型 | 输出类型 | 描述 |
---|---|---|---|---|
Model | ModelProcessor | NodeContent Class | ModelContent Class |
可选择参数的处理器,将模型输出为一个ModelContent Class 对象。 可用参数:
|
No Processing Required | PassThroughProcessor | Object | Object |
不对文件做任何操作。如果你的素材已经是游戏直接可用的格式(比如,一个外部的已经准备好的DDS文件)或者设计给XNA Game Studio Express使用的一个特殊的XML格式(*.xml)的文件,选择这个处理器。 |
Sprite Font Description | FontDescriptionProcessor | FontDescription | SpriteFontContent |
将指定的.spritefont文件转换为一个font。 |
Sprite Font Texture | FontTextureProcessor | TextureContent | SpriteFontContent |
可选参数的处理器,将一个sprite font纹理输出为一个SpriteFontContent 对象。 可选参数:
|
Sprite Font Texture | FontTextureProcessor | Texture2DContent | SpriteFontContent | 将一个指定标记的2D bmp文件转换为一个font。 Color.Magenta的像素会被转换为Color.Transparent。 |
Texture | TextureProcessor | TextureContent Class | TextureContent Class |
可选参数的处理器,将纹理输出为TextureContent Class 对象。 可用参数:
|
XACT Project | N/A | N/A | N/A | 从一个XACT工程创建音频资源。 |
发布时间:2012/1/29 下午11:07:04 阅读次数:5957