Win8 Metro App里玩XNA:ContentPipeline内容管线问题
  开了个头

本篇中其实没有真正解决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 nowpaper 阅读(...) 评论(...) 编辑 收藏

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

Win8 Metro App里玩XNA:ContentPipeline内容管线问题相关推荐

  1. Win8 Metro App里玩XNA:移植XNA游戏到Win8

    Win8 Metro App里玩XNA:移植XNA游戏到Win8   Ready ! 在本文中,将把一个WindowsPhoneXNA的游戏移植到Win8 Metro(Modern)风格上,直接在Wi ...

  2. Win8 Style App 播放Smooth Streaming

    不知道Smooth Streaming是啥参见以前随笔:http://www.cnblogs.com/sun8134/archive/2012/05/14/2499296.html 这里主要说下怎么在 ...

  3. Windows 8 Metro App学习笔记(九)—磁砖

    瓷砖,即桌面显示的Tile,它的创建和生命周期都可以由用户自由创建并可以直接访问一个应用程序,还可以为信息的及时推送带来很多的方便.在Windows 8中,由SecondaryTile对象负责. 首先 ...

  4. Win8 Metro和Windows Phone的Style相关的一些问题

    Win8 Metro和Windows Phone虽然都是xaml描述的界面,但样式是有一些区别的: Win8的主题是由开发者控制的,可以在App.xaml.cs代码里设置RequestedTheme= ...

  5. 夜神云手机技术正式发布,App试玩时代开启

     时间:2016-05-23 技术改变生活,夜神正是以技术的力量在提升移动互联网存在的价值.独辟蹊径的科技创新让夜神在移动互联网生态圈的道路上领先一步,但下一步的市场布局与发展策略也尤为重要,这需 ...

  6. win8/Metro开发系列二 Xaml数据绑定

    首先还是那句话,我不是大牛,这些只是简单的记录一下学习的过程,没有太多面向对象和设计模式的思维,只偏基础,不喜莫笑:个人观点如果有不足之处,还望多多指教!由于学的不是太深入这里大多数是面向控件和开发介 ...

  7. Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法

    原文:Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法  [函数名称] 肤色检测函数SkinDetectProcess(WriteableBitmap src) [算法说明] ...

  8. 现有代码移植到Metro App

    现有代码移植到Metro App 一:工程配置 配置WinRT工程时要注意以下几点: 静态库工程General里的"Windows Store App Support"设成true ...

  9. Apache HttpComponents在App里访问HTTP服务

    服务URL:http://127.0.0.1:8080/myweb/servlet/HelloServlet在任意APP里,都可以通过HTTP来访问这个服务: Java的App项目里,可以使用apac ...

最新文章

  1. eclipse假死解决办法
  2. vue与react组件的思考
  3. 如何实现Spark on Kubernetes?
  4. gRPC-rs:从 C 到 Rust
  5. 设计师为什么要学编程,开发者为什么要学设计?
  6. 碰到日期题就怕的我来写一道水题吧
  7. Midway Serverless 发布 2.0,一体化让前端研发再次提效
  8. 小汤学编程之JAVA基础day07——面向对象(二):封装、继承与多态
  9. vue 切换页面没有改变滚动条_Web前端高级Vue学习笔记(三)
  10. bzoj1045题解
  11. Android --- GreenDao的实现(ORM框架)
  12. 计算机 随机分组的方法,最小化随机分组方法介绍及其SAS实现
  13. 艾永亮:新能源汽车补贴退潮后,谁在裸奔,各大车企该如何应对
  14. 【Python基础】from pygame.base import * # pylint: disable=wildcard-import; lgtm[py/polluting-import] Mod
  15. 输入起止坐标,返回途径网格。
  16. 栅格数据灰度化并前端转换展示
  17. FFT(快速傅里叶变换)摘要
  18. Dart笔记(10):Runes
  19. 三分钟认知Softmax和Sigmoid的详细区别
  20. 记一次作业:完成企业网络安全运营建设方案

热门文章

  1. Bzoj4556 [Tjoi2016Heoi2016]字符串
  2. 创业型公司如何找有相同价值观的人(转)
  3. http协议介绍及httpd特性详解
  4. Shell学习之IF的使用
  5. offline tablespace的几种方法
  6. python3内存分析_调试和分析 - tracemalloc —- 跟踪内存分配 - 《Python 3.7 标准库》 - 书栈网 · BookStack...
  7. 获取一个字符串在另一个字符串中出现的次数
  8. 数据可视化软件有什么特点
  9. 用商业智能BI软件的好处有哪些
  10. 大数据应用智能交通有哪些意义