设为首页 收藏本站
查看: 713|回复: 0

Win8 Metro App里玩XNA:ContentPipeline内容管线问题

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-20 11:02:30 | 显示全部楼层 |阅读模式
  开了个头
  本篇中其实没有真正解决Win8里XNA的ContentPipeline(内容管线)问题,而是说明如何使用特定的ContentPipeline(内容管线),在XNA里读取内容是通过Content.Load读取,取得资源方法封装的很好,以至于不需要文件后缀,这是因为XNA通过内容管线的方式将所有的资源编译成了xnb资源文件,XNA自带了一些默认的资源类型,在任何一个XNA工程里的Content子项目中的资源打开属性,如下图:
DSC0000.jpg
  输入和输出都对应了一个处理器,也就是说,有一个进还有一个是出,这些内容输入和输出所对应也比较简单,例如Texture的纹理,Model的模型等,这些可以在官方文档中查到比较明确的例子,但是有的时候,我们所需的并不只是这些标准的资源,而是更加自定义的资源,例如在cocos2d-xna中.plist文件,这些文件你指定的标准类型是没有用的,就算在编译xnb的时候不出错,也会在Load的时候崩溃,那么如何解决这个问题呢?
  在前面的篇幅中,有朋友建议使用FromStream的方法解决,我很兴奋的去做了尝试,但是这种方法并不通用,要知道xna里最出名的就是自定义资源,这些自定义出来的xnb,通过流方式解析那将会是一件大工程,而且即便是能输出正确的资源,但转换的代码等于你的资源总量。
  自定义内容管线
  既然标准的没有,那么就只能自定义了,XNA提供了ContentImporter和ContentProcessor来制作自定义的资源,甚至在Studio里还提供了相关模板:
DSC0001.jpg
  然后写出你想处理的输入和输出的处理类:
DSC0002.jpg
  具体代码其实也很简单,推荐参看cocos2d-xna中这段处理,上图来自该工程。
  然后选定你的资源更改即可,那么在我的一个游戏《阿翔跨栏》中,就有一个自定义的数据文件,这个数据文件主要是用来描述角色动画帧的位置信息,很显然我需要自行转换,取得其数据流即可:
DSC0003.jpg
  在取得的数据流之后在做特殊处理,在cocos2d-xna中如果你遇到了.plist文件就得需要同样的办法才能让你的demo运转正常,这方面可以参看coco2d-xna官方test就可以了解。
  In MonoGame XNA
  现在我们转换到Windows8中,使用MonoGame去取得自定义资源时候该怎么办呢?毕竟没有编译方法,这让我困扰了好久,当想通的时候却发现这一切是那么的简单,原来既然已经没有了输入,就不需要去管输入了,只要将xnb读出来即可,所以,直接引用内容索引,比如说你自定义的内容输出例如为CCContent,那么就直接Content.Load,所以这样做起来代码仍然不需要修改,做法当然还是那么简单,把编译好的xnb文件扔仅工程的Content目录,并且设置属性为内容。期望微软尽快能出XNA For VS2012,这样在开发时候就不用这样切来切去了。
  本来觉得可能会写好多,写到现在发现没什么好写的,只要知道了一种方法,自然其他的问题也就迎刃而解,为了让咱这篇丰满一点,附上《阿翔跨栏》WP和Win8同版视频:

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-68841-1-1.html 上篇帖子: #Win8# 初试Win 8 App开发 下篇帖子: MVVM Sidekick Win8 RT 轻量级MVVM框架开源
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表