系列目录:
JME3资源管理之一:核心组件介绍
JME3资源管理之二:AssetLoader和AssetLocator
JME3资源管理之三:资源加载流程
JME3资源管理之四:心得和小节
JME3在加载资源的过程中,AssetManager会先根据AssetKey去缓存中查找资源,如果找得到的话当然皆大欢喜,找不到的话才会去读取磁盘。
具体加载的流程是这样的:
1、在缓存中查找资源
检查AssetCache中的资源,若找不到就进行下一步,若找到就直接返回了。
AssetCache cache = handler.getCache(key.getCacheType());
Object obj = cache != null ? cache.getFromCache(key) : null;
2、匹配AssetLoader
根据资源后缀名来匹配AssetLoader,找不到的话抛出异常。
AssetLoader loader = handler.aquireLoader(key);
3、资源定位
遍历所有注册过的AssetLocater,返回AssetInfo,找不到的话会抛出异常。
AssetInfo info = handler.tryLocate(key);
4、加载资源
调用AssetLoader的load(AssetInfo info)方法,返回资源对象。
obj = loader.load(info);
5、后续处理
AssetLoader返回Object类型的对象,经过AssetProcessor处理后,转换成实际的对象类型。
比如AWTLoader读取图片数据后,返回Image类型的对象。再通过TextureProcessor处理后才变成Texture对象。
AssetProcessor proc = handler.getProcessor(key.getProcessorType());
if (proc != null){
// do processing on asset before caching
obj = proc.postProcess(key, obj);
}
6、保存到缓存
资源加载结束后,对象会保存到缓存中。
if (cache != null){
// At this point, obj should be of type T
cache.addToCache(key, (T) obj);
}
分享到:
相关推荐
8. **资源加载**:JME3提供了一些工具类来加载和管理纹理、模型、音频等资源。 9. **调试和日志**:利用JME3的DebugKeys或日志框架(如log4j)进行调试输出。 总的来说,"sandbox_jme3_jogl:使用jogl后端实验jme3...
最后一章关注游戏的性能优化技巧,如降低渲染开销、资源加载策略,以及如何打包和发布游戏,使其能在不同平台上运行。 通过这个详尽的中文教程,读者不仅可以学习到JMonkeyEngine的核心特性,还能掌握3D游戏开发的...
3. **加载与执行**:Java虚拟机加载字节码,并将其转换为机器码执行。在此过程中,JVM负责管理内存、线程调度等任务。 #### 五、Java虚拟机的功能 1. **执行引擎**:负责执行字节码。 2. **内存管理**:管理堆...
- **SimpleGame概述**:SimpleGame是jMonkeyEngine(简称jME)中提供的一个基本应用程序模板,用于简化游戏开发流程。它自动处理了一些常见的初始化任务,如设置相机、输入处理等,使得开发者能够快速搭建起一个可...
引擎的资源管理系统负责加载、缓存和管理游戏中的所有资源,如模型、纹理、音频和动画,确保高效且无内存泄漏。 8. **社区与工具** jMonkeyEngine有一个活跃的开发者社区,提供丰富的教程、示例和插件。官方还...
JME(Java Math Editor)编辑器特别强调了对数学公式的支持,通过内建的LaTeX语法解析和渲染,使得在网页中插入复杂的数学公式变得简单。在题库类应用中,这样的功能非常关键,因为它允许教师或管理员方便地录入包含...
它定义了如何在JAVA卡上安装、更新、删除和管理Java应用程序,以及如何控制这些应用程序的权限和资源使用。GP规范包括卡片管理器(Card Manager)、安全域(Secure Domain)和应用(Application)等概念,为卡片的...