注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

XNA XML Content Pipeline  

2010-02-24 13:15:18|  分类: Game |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    《XML and the Content Pipeline》一文对XML Content Pipeline做了些许介绍,不熟悉的朋友可以先看下。

XNA XML Content Pipeline - 秒大刀 - 秒大刀的城堡

    游戏制作通常需要很多类型的资源,经典的贴图、声音和模型等资源可以通过XNA内嵌的几种Content编译器进行处理,详情参考XNA 3.1 Content Pipeline结构图。其中有一条“.xml→XmlImporter→CustomContent→CustomProcessor→CustomContent→ContentTypeWriter→XNB File Format→ContentTypeReader→CustomType”的流程中大有学问。游戏中那些自定义的配置文件基本上都可以通过这条路径得以解决。将配置以XML资源的形式保存,然后经过XNA XML Content Pipeline处理后即可方便的在运行时使用,避免了n多自定义配置格式的麻烦和维护代价,值得广泛采用。

    XNA-XML文件通过XnaContent/Asset节点Type属性指定对应代码中的类,注意这里要用全命名空间签名。Asset节点下的内容则为该类具体的数据,配置格式复杂度还处于能接受的范围内,比较适合手工配置。但如果要批量生产的话,还是需要有相应的编辑器。编辑器需要能无缝的对XNA-XML文件进行读写并转换成能共编辑器内部使用的对象。HOW?

 

    Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate名字空间下有个IntermediateSerializer类,provides methods for reading and writing XNA intermediate XML format。其中的静态方法Serialize可以将对象直接序列化为XNA所需要的XML资源文件格式,Deserialize方法又可直接将XNA-XML资源文件反序列化为对象,而且不需要任何额外的代码。 

   传统的游戏编辑器制作工艺上是以二进制存档为主的。编辑器中需要包含对二进制存档的序列化和反序列化代码,游戏中仅需包含一份反序列化代码。

    XNA-XML存档格式是明文的。通过IntermediateSerializer,编辑器无需写任何代码则可自动实现对XML存档的序列化和反序列化,但仍需实现游戏对象和xnb文件之间的序列化(ContentTypeWriter)和反序列化(ContentTypeReader)代码。

    从工作量上来讲,XNA-XML存档格式并不会比原来的二进制存档格式多,都需写一份游戏对象和二进制存档之间的序列化和反序列化代码。而XML明文存档所具有的优势,这点《UNIX编程艺术》中讲的太多的,自然不必赘述。再加上XNA对整个Content Pipeline的有效控制,对资源管理的优秀封装,还有让人赏心悦目的C#语法……

 

    XNA XML Content Pipeline对游戏编辑器的制作无疑是巨大的福音!

 

 

参考:

XNA Framework Content Pipeline简介

IntermediateSerializer vs. XmlSerializer

Content Pipeline assemblies

  评论这张
 
阅读(1858)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018