zhigu 发表于 2006-12-31 14:26:00

Content Pipeline

<div class="ItemText"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span lang="EN-US"></span></font></font></p><font size="3"><font color="#000000"><span lang="EN-US"><font face="Times New Roman">Content Pipeline </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">译注:以后该名词本人统一翻译成素材管道,它应该是</span><span lang="EN-US"><font face="Times New Roman">XNA</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">管理游戏里的图像等资源的一个框架,因为官方也没给出具体中文翻译所以只是暂定。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"></span></font></font>&nbsp;</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"></span></font></font><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;关于</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">我们已经讨论过了。前几天</span><span lang="EN-US"><font face="Times New Roman">Mitch</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的文章里对</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的使用讲了很多。现在让我们来谈谈</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">产品的另一部分,也就是</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">素材管道。如同我在我的</span><span lang="EN-US"><font face="Times New Roman">Gamefest </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">幻灯片里说的,</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的素材管道可以用下面的话来描述:</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;“一个由</span><span lang="EN-US"><font face="Times New Roman">C# Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">管理的可扩展素材处理框架。”</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="3">&nbsp;&nbsp;&nbsp;如果你想要更全面的了解这项技术,那么就让我从头开始讲述。</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;目前素材(</span><span lang="EN-US"><font face="Times New Roman">Content</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)是游戏的很大一部分,而在游戏中使用素材并不简单,实际上是很别扭。有如此多的问题要处理,无论怎样你始终要确定使用某种导出器(</span><span lang="EN-US"><font face="Times New Roman">exporter</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,程序中素材的输出模块)或者要找到合适的工具来支持所选择的导出器。然后你不得不使用一些工具来处理素材,接着使用其它的工具来讲素材转化为你的游戏中可用的数据形式,你还要为正确的载入素材操心。实现了以上步骤你才能使你的素材在游戏中正确的呈现。别看我总结的很快,但是这里要作很多的工作。实际上大型的游戏工作室,有一批人专门从事这一块的专业工作。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;使用</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">素材管道,这样的处理过程就有点不同而有所改进。首先它很容易使用;它很容易按你的需求扩展和定制;在组装你的游戏时提供了生成工具和引擎的可选择性。众所周知当你只想专注于你的游戏的时候,还要操心构建游戏的素材基础,这可不让人舒服。而</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">内容管理系统正是让你做到:专注于游戏本身。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;首先需要来谈一谈的是在你的游戏中如何使用素材。通过</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">素材管道,你的素材在</span><span lang="EN-US"><font face="Times New Roman">Visual C# Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中得到管理,所以你加入素材和加入代码文件的操作类似。这可以帮助你保持系统的整合,而且让你可以在一个解决方案里组织它们,或者如果你愿意放在几个工程里。(译注:这里的名词应该是对应的</span><span lang="EN-US"><font face="Times New Roman">Visual Studio</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">开发软件)你可以为你的素材设置动作(</span><span lang="EN-US"><font face="Times New Roman">actions</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)例如使用什么样的导入器和导出器等等。(更多的设置也很容易!)</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;许多不同的组件构成了</span><span lang="EN-US"><font face="Times New Roman">XNA Framework </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">素材管道。每一个组件都有一个很容易理解的专业名称。熟悉这些专业名称可以帮助你更好的理解</span><span lang="EN-US"><font face="Times New Roman">XNA</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">素材管道。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;当你第一次加入你的素材的时候,你需要选择一个导入器(</span><span lang="EN-US"><font face="Times New Roman">Importer</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)。导入器的作用在于得到数据和预处理(</span><span lang="EN-US"><font face="Times New Roman">normalizing</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)数据。这就意味着你可以不必在意一些细节。例如你的素材要发往何处,以及素材创建工具怎么样可以得到最优的素材。导入器从保存好的文件或者是你的素材生成工具中得到素材,然后把它们导入到</span><span lang="EN-US"><font face="Times New Roman">Visual C# Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中。随着你对这个系统其它部分的了解深入,你就会明白这样做的理由。但是在这里我要指出我们更多的是关注文件中的那些数据。也就是说,这里我们并不要在意用来生成数据的素材制作工具。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;那么在第一版的</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中导入器是那些呢?请看下面的列表图表。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><shapetype id="_x0000_t75" coordsize="21600,21600" ospt="75" opreferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path oextrusionok="f" gradientshapeok="t" oconnecttype="rect"></path><lock vext="edit" aspectratio="t"></lock></shapetype></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;<img src="http://xna.everdocument.com/blog/content/binary/XFCPFileFormat.png" border="0" alt=""/></font></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;其中大多数的导入器你可能已经熟悉了,但是这里的</span><span lang="EN-US"><font face="Times New Roman">Autodesk FBX</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">值得拿出来介绍一下。</span><span lang="EN-US"><font face="Times New Roman">FBX</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">是一种可以在许多不同的素材生成工具中使用的</span><span lang="EN-US"><font face="Times New Roman">3D</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">场景文件存储格式。无论商业软件还是共享软件和自由软件都支持</span><span lang="EN-US"><font face="Times New Roman">FBX</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">格式。我们试图挑选出一个种能被大多数工具处理和改写的格式。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;在导入器完成了它的工作以后,数据保存在我们的素材</span><span lang="EN-US"><font face="Times New Roman">DOM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">(文档对象模型?)中。</span><span lang="EN-US"><font face="Times New Roman">DOM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">可以很容易的用来生成一系列类或者一个模式(</span><span lang="EN-US"><font face="Times New Roman">schema</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)</span><span lang="EN-US"><font face="Times New Roman">(</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">如同一个</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">文件</span><span lang="EN-US"><font face="Times New Roman">)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。通过</span><span lang="EN-US"><font face="Times New Roman">DOM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中的内容,数据成为一种强类型的数据。这意味中数据以一个明显可知的格式描述。这样一系列的顶点或者贴图数据看起来是同样的,而不论文件是从何而来的。这一点对于下一步工作的有效进行尤为重要。为了便于调试这个文件也可以以</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的形式写到磁盘上。不过这样做比起原始文件的信息来会有些“损耗”,因为导入器只会存储那些它关心的数据。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;处理器(</span><span lang="EN-US"><font face="Times New Roman">processor</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)用来从素材</span><span lang="EN-US"><font face="Times New Roman">DOM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中的得到数据,然后给你创建一个可以在运行时使用的对象。该对象可以简单到就是一个模型(</span><span lang="EN-US"><font face="Times New Roman">model</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">),或者复杂到你的游戏中的多个处理器(</span><span lang="EN-US"><font face="Times New Roman">processors</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)。</span><span lang="EN-US"><font face="Times New Roman">XNA Framework </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">素材管道包含了一些封装好的处理器:例如模型(</span><span lang="EN-US"><font face="Times New Roman">model</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">用来表示简单的物体和贴图),</span><span lang="EN-US"><font face="Times New Roman">Texture2D</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">(用做精灵(</span><span lang="EN-US"><font face="Times New Roman">sprites</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">)或者和一个模型联合),还有特效(用来处理你的模型材质)。这样你不再需要关心例如顶点缓存或者是</span><span lang="EN-US"><font face="Times New Roman">triangle strips</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">(三角多边形)。同时也许你的游戏世界并不是建立在简单的模型上的,你也可以得到对素材的必要的更大弹性。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;这里有一个这方面的例子。例如你正在组建一个竞速游戏,你会有一些用来组成赛道的素材文件。在这样的赛道(译注:一个整体)中,你会包含各种类型的数据,例如起点</span><span lang="EN-US"><font face="Times New Roman">/</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">终点,检查站的地点以及一个赛道的路径。这些数百个模型不间断的出现的赛道中,而你可以简单的写一个处理器处理这所有的数据并生成一个赛道对象。是的,尽管你的引擎还是需要“理解”赛道对象是什么,但是处理器为你想使用的素材提供了高度的弹性和可定义能力。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;处理器同时被设计为可以简便的进行改写,分享和重用的。记住处理器是从素材</span><span lang="EN-US"><font face="Times New Roman">DOM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中导出数据的。理解这点之所以重要因为你的处理器将不在意文件来源和格式。在这一层因为所有的数据以相同的格式存储,你不需要对你的处理器针对</span><span lang="EN-US"><font face="Times New Roman">x. </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">或</span><span lang="EN-US"><font face="Times New Roman">.tag</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">文件精心特别的设置。另外你还可以通过一些类似</span><span lang="EN-US"><font face="Times New Roman">D3DX</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的函数来获得辅助功能。这里可以去看一个生成微缩的例子。(译注:不太知道作者指的是什么。)</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;素材编译也是我们的系统中的一个重要部分,它由编译的辅助模块处理。在</span><span lang="EN-US"><font face="Times New Roman">Visual C# Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中,当你点击编译,你的素材都会被编译保存在磁盘上以准备在运行时使用。我们也提供一个增量性的素材编译。这意在味这如果你改变了一个贴图,我们只要重编译这一部分用到的材质。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;最终,你需要用某种方法在你的游戏中得到这些数据。这里你可以使用</span><span lang="EN-US"><font face="Times New Roman">Content Manager</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。该组件设计用来快速有效的载入资源。它处理了在载入过程中的大量细节问题,例如关联的资源要同时载入等等。这篇文章也只是一个概述,下面的简短代码演示了</span><span lang="EN-US"><font face="Times New Roman">Content Manager</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">是多么的便捷。</span></font></font></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan;"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt;">ContentManager</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt;"><font color="#000000"> myManager = </font><span style="COLOR: blue;">new</span><font color="#000000">
                                </font><span style="COLOR: teal;">ContentManager</span><font color="#000000">(GameServices);<p></p></font></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 12pt; TEXT-ALIGN: left; mso-pagination: widow-orphan;"><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt;"><font color="#000000">model = myManager.Load&lt;</font><span style="COLOR: teal;">Model</span><font color="#000000">&gt;(</font><span style="COLOR: maroon;">"ship"</span><font color="#000000">);</font></span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><font color="#000000" size="3">有时候图表更能够说明问题,下面这张图表示了各部分的组成关系。</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;<img src="http://xna.everdocument.com/blog/content/binary/XFCPDrawing.png" border="0" alt=""/></font></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;扩展性也是</span><span lang="EN-US"><font face="Times New Roman">XNA</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">素材管道的一个重要方面。我们以上所讨论的所有组件都是被设计为可以扩展继承的。在以后的文章中我们会进一步谈到。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;请注意</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">素材管道是一项庞大而全新的技术。尽管我们有很多人已经在上面付出了艰辛的劳动,但在星期三的</span><span lang="EN-US"><font face="Times New Roman">beta</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版中它还是存在一定问题。所以</span><span lang="EN-US"><font face="Times New Roman">XNA Framework</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">素材管道还没有包含在</span><span lang="EN-US"><font face="Times New Roman">beta</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版里,直到</span><span lang="EN-US"><font face="Times New Roman">8</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">月</span><span lang="EN-US"><font face="Times New Roman">30</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">号你才能下载它。在</span><span lang="EN-US"><font face="Times New Roman">beta</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版本里也可以使用素材,但是只比手动操作好一点。同时在</span><span lang="EN-US"><font face="Times New Roman">Spacewar Starter Kit</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中也演示了开发人员如何使用素材管道的外部文件为素材。我们还在考虑在</span><span lang="EN-US"><font face="Times New Roman">release</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版中使用其它的途径来实现这一功能,但是这都不是强制使用的。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;最后我放上了一个使用</span><span lang="EN-US"><font face="Times New Roman">XNA </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">内容管理的可运行小例子作为附件。我在</span><span lang="EN-US"><font face="Times New Roman">Gamefest</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中演示了这个例子,并且特别的为我们的团队</span><span lang="EN-US"><font face="Times New Roman">blog</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的读者作了保存。再次说明这个</span><span lang="EN-US"><font face="Times New Roman">demo</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">并没有绞缠在代码上,有许多的文章讨论这些问题,它只是体现了</span><span lang="EN-US"><font face="Times New Roman">XNA</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">内容管理给你的一个大体感觉。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">XNA Framework Content Pipeline Demo (Streaming)<br/>XNA Framework Content Pipeline Demo (Downloadable)</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font color="#000000"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;我希望</span><span lang="EN-US"><font face="Times New Roman">XNA</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的这次发布让我们看到</span><span lang="EN-US"><font face="Times New Roman">XNA Game Studio Express</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的另一面。随着时间的流逝我们在技术上越转越深,但是我希望再次获得一个概观的体验,因为实在是有太多的新的理念要去揣摩。</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><p><font face="Times New Roman" color="#000000" size="3">&nbsp;</font></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US"><font face="Times New Roman" color="#000000" size="3">Michael Klucher<br/>Program Manager - XNA Game Studio</font></span></p><p></p></div>
页: [1]
查看完整版本: Content Pipeline