`
windybell
  • 浏览: 14859 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JME3资源管理之四:心得和小节

 
阅读更多
系列目录:
JME3资源管理之一:核心组件介绍
JME3资源管理之二:AssetLoader和AssetLocator
JME3资源管理之三:资源加载流程
JME3资源管理之四:心得和小节


1、加密资源包

有时候我们需要对游戏资源进行打包、加密。那么使用这些资源的时候,就需要在程序中进行解包,然后再定位到实际的资源。我们就可以自定义AssetLocator和AssetInfo,用来实现资源的解包算法。

2、扩展资源格式

JME3目前虽然不少多媒体文件,但是也不可能支持所有的资源格式。我们可以根据自己的需要扩展实现AssetLoader。

这个工作需要研究对应资源的数据结构和JME3的数据结构,然后自己实现数据格式的转换。目前JME3中主要的数据结构有:
Mesh
Image
AudioData
Material
Shader
Animation
我没有写Texture,因为jme3中有TextureProcessor,可以把Image转换成Texture对象。

前一段时间因为项目需要,我一直在研究3DMAX的ASE文件结构,然后自己实现了一个AseLoader,终于能够正确导入3DMAX的ASE模型了。


3、插件优先加载

我希望游戏一定要有扩展性,最起码要能够方便的制作和使用MOD。根据研究AssetLocater的特性,我觉得JME3可以使用一种非常简单的方式来解决这个问题。

(1)在工程目录下创建2个文件夹,一个是Default文件夹,另一个是MOD文件夹。
(2)注册2个FileLocator,把MOD文件夹的顺序列在Default文件夹的前面。

由于AssetManager定位资源的时候,会按顺序查找资源,因此只要在MOD文件夹中放入同名文件夹,程序就不会去Default中找了。

如果我们想替换游戏中的界面布局、人物外观,那么只要把Default中的文件略作修改,然后丢到MOD文件夹里面就行。如果想禁用的话,把MOD中的资源重命名或者删掉就OK,非常简单。

4、其他

(1)JME3自带的FileLocator是大小写敏感的。
(2)如果你想禁用缓存,可以自己继承AssetKey,然后把getCacheType方法重写,返回null。
(3)还没想好,以后再扩展吧。
  • 大小: 328.8 KB
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics