博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win8 Metro App里玩XNA:ContentPipeline内容管线问题
阅读量:6592 次
发布时间:2019-06-24

本文共 1436 字,大约阅读时间需要 4 分钟。

  开了个头

本篇中其实没有真正解决Win8里XNA的ContentPipeline(内容管线)问题,而是说明如何使用特定的ContentPipeline(内容管线),在XNA里读取内容是通过Content.Load<T>读取,取得资源方法封装的很好,以至于不需要文件后缀,这是因为XNA通过内容管线的方式将所有的资源编译成了xnb资源文件,XNA自带了一些默认的资源类型,在任何一个XNA工程里的Content子项目中的资源打开属性,如下图:

输入和输出都对应了一个处理器,也就是说,有一个进还有一个是出,这些内容输入和输出所对应也比较简单,例如Texture的纹理,Model的模型等,这些可以在官方文档中查到比较明确的例子,但是有的时候,我们所需的并不只是这些标准的资源,而是更加自定义的资源,例如在cocos2d-xna中.plist文件,这些文件你指定的标准类型是没有用的,就算在编译xnb的时候不出错,也会在Load的时候崩溃,那么如何解决这个问题呢?

在前面的篇幅中,有朋友建议使用FromStream的方法解决,我很兴奋的去做了尝试,但是这种方法并不通用,要知道xna里最出名的就是自定义资源,这些自定义出来的xnb,通过流方式解析那将会是一件大工程,而且即便是能输出正确的资源,但转换的代码等于你的资源总量。

  自定义内容管线

既然标准的没有,那么就只能自定义了,XNA提供了ContentImporter和ContentProcessor来制作自定义的资源,甚至在Studio里还提供了相关模板:

然后写出你想处理的输入和输出的处理类:

具体代码其实也很简单,推荐参看cocos2d-xna中这段处理,上图来自该工程。

然后选定你的资源更改即可,那么在我的一个游戏《阿翔跨栏》中,就有一个自定义的数据文件,这个数据文件主要是用来描述角色动画帧的位置信息,很显然我需要自行转换,取得其数据流即可:

在取得的数据流之后在做特殊处理,在cocos2d-xna中如果你遇到了.plist文件就得需要同样的办法才能让你的demo运转正常,这方面可以参看coco2d-xna官方test就可以了解。

  In MonoGame XNA

现在我们转换到Windows8中,使用MonoGame去取得自定义资源时候该怎么办呢?毕竟没有编译方法,这让我困扰了好久,当想通的时候却发现这一切是那么的简单,原来既然已经没有了输入,就不需要去管输入了,只要将xnb读出来即可,所以,直接引用内容索引,比如说你自定义的内容输出例如为CCContent,那么就直接Content.Load<CCContent>,所以这样做起来代码仍然不需要修改,做法当然还是那么简单,把编译好的xnb文件扔仅工程的Content目录,并且设置属性为内容。期望微软尽快能出XNA For VS2012,这样在开发时候就不用这样切来切去了。

本来觉得可能会写好多,写到现在发现没什么好写的,只要知道了一种方法,自然其他的问题也就迎刃而解,为了让咱这篇丰满一点,附上《阿翔跨栏》WP和Win8同版视频:

该项目里就用到的自定义内容管线,按惯例都会附上源代码,可惜这次不行,还请谅解啦。

posted on
2012-09-04 22:19 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/nowpaper/archive/2012/09/04/2670790.html

你可能感兴趣的文章
软件需求规格书
查看>>
用Java axis2调用.net平台的Webservice出现的一些问题
查看>>
Struct2-使用随笔
查看>>
INSTALL_FAILED_OLDER_SDK
查看>>
自定义指令
查看>>
[Translation] [Quora]How exactly does a computer program work?
查看>>
c# delegate委托 和 event 时间 用法 快速体验
查看>>
windows git配置代理通过ssh协议访问github
查看>>
P2178 [NOI2015]品酒大会
查看>>
用CSS让未知高度内容垂直方向居中
查看>>
软件需求分析方法
查看>>
数组对象,字符串对象,Match对象
查看>>
Java 并发基础——线程安全性
查看>>
Auto Layout
查看>>
ZooKeeper伪分布式集群部署
查看>>
Golang学习笔记——variable
查看>>
【iOS】Masonry使用案例讲解
查看>>
HDU 4393 Throw nails
查看>>
C#线程系列讲座(5):同步技术之Monitor
查看>>
Java基础(Scanner、Random、流程控制语句)
查看>>