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

JME3资源管理之二:AssetLoader和AssetLocator

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

AssetManager加载资源前,首先要注册各种AssetLoader和AssetLocator,否则AssetManager将不知道怎么去加载资源。

1、注册AssetLoader

AssetLoader保存在一个map中,通过后缀名来匹配。如果2个AssetLoader都注册了同样的后缀名,那么后注册的AssetLoader会挤掉先定义的AssetLoader
    am.registerLoader(AWTLoader.class, "jpg");


2、注册AssetLocator

AssetLocator保存在一个list中。如果2个资源位置中都有同名的资源,那么先注册的资源会被找到,后面的就忽略了
    am.registerLocator("res", FileLocator.class);//注册程序相对路径res
    am.registerLocator("C:/", FileLocator.class);// 注册绝对路径
    am.registerLocator("/", ClasspathLocator.class);


3、默认注册

使用JME3的应用程序时,默认注册了下面这些AssetLoader和AssetLocater。

LOCATOR / com.jme3.asset.plugins.ClasspathLocator

LOADER com.jme3.texture.plugins.AWTLoader : jpg, bmp, gif, png, jpeg
LOADER com.jme3.audio.plugins.WAVLoader : wav
LOADER com.jme3.audio.plugins.OGGLoader : ogg
LOADER com.jme3.cursors.plugins.CursorLoader : ani, cur, ico
LOADER com.jme3.material.plugins.J3MLoader : j3m
LOADER com.jme3.material.plugins.J3MLoader : j3md
LOADER com.jme3.material.plugins.ShaderNodeDefinitionLoader : j3sn
LOADER com.jme3.font.plugins.BitmapFontLoader : fnt
LOADER com.jme3.texture.plugins.DDSLoader : dds
LOADER com.jme3.texture.plugins.PFMLoader : pfm
LOADER com.jme3.texture.plugins.HDRLoader : hdr
LOADER com.jme3.texture.plugins.TGALoader : tga
LOADER com.jme3.export.binary.BinaryImporter : j3o
LOADER com.jme3.export.binary.BinaryImporter : j3f
LOADER com.jme3.scene.plugins.OBJLoader : obj
LOADER com.jme3.scene.plugins.MTLLoader : mtl
LOADER com.jme3.scene.plugins.ogre.MeshLoader : meshxml, mesh.xml
LOADER com.jme3.scene.plugins.ogre.SkeletonLoader : skeletonxml, skeleton.xml
LOADER com.jme3.scene.plugins.ogre.MaterialLoader : material
LOADER com.jme3.scene.plugins.ogre.SceneLoader : scene
LOADER com.jme3.scene.plugins.blender.BlenderModelLoader : blend
LOADER com.jme3.shader.plugins.GLSLLoader : vert, frag, glsl, glsllib

上面的数据来自jme3默认文件:com/jme3/asset/Desktop.cfg

4、AssetConfig

除了在代码里面直接调用AssetManager的方法来注册,我们还可以利用配置文件来进行注册。
配置文件的格式就和上面的代码一样,AssetConfig类专门用于解析这种配置文件。然而实际上我们在编程的时候几乎不上AssetConfig,只要注意配置的方式就行了。我们这里主要谈谈怎么使用配置文件。

配置文件的使用有3个关键点:
(1)配置文件必须放在工程的classpath之下,否则无法识别。
(2)要在AppSettings中添加参数"AssetConfigURL",指定配置文件的加载路径。
(3)如果使用自定义配置文件,那么jme3默认的配置文件就不会生效了!


你可以直接在src文件夹下面创建一个文本文件,文件名无所谓,只要文件格式正确就行。使用方法如下:
	public static void main(String[] args) {
		AppSettings settings = new AppSettings();
		settings.set("AssetConfigURL", "org/pstale/asset/Assets.cfg");

		SimpleApplication app = new YourApplication();
		app.setSettings(settings);
		app.start();
	}


那么,为什么配置文件会有这些限制呢?我们看一看Application类的源代码就知道了。
Application初始化AssetManager的时候,会从AppSettings中读取"AssetConfigURL"这个参数,然后再读取配置文件。
找不到配置文件的话,就会使用默认配置文件。
    private void initAssetManager(){
        if (settings != null){
            String assetCfg = settings.getString("AssetConfigURL");
            if (assetCfg != null){
                URL url = null;
                try {
                    url = new URL(assetCfg);
                } catch (MalformedURLException ex) {
                }
                if (url == null) {
                    url = Application.class.getClassLoader().getResource(assetCfg);
                    if (url == null) {
                        logger.log(Level.SEVERE, "Unable to access AssetConfigURL in asset config:{0}", assetCfg);
                        return;
                    }
                }
                assetManager = JmeSystem.newAssetManager(url);
            }
        }
        if (assetManager == null){
            assetManager = JmeSystem.newAssetManager(
                    Thread.currentThread().getContextClassLoader()
                    .getResource("com/jme3/asset/Desktop.cfg"));
        }
    }
分享到:
评论

相关推荐

    JME中文教程.pdf

    #### 二、JME3类库详解 - **jme3-core**:任何JME3项目的基础核心库。 - **jme3-effects**:提供多种特效,如滤镜、粒子效果、水面等。 - **jme3-networking (SpiderMonkey)**:用于网络通信的模块。 - **jme3-...

    jme3 api(精华chm)

    com.jme3.animation com.jme3.app com.jme3.app.state com.jme3.asset com.jme3.asset.pack com.jme3.asset.plugins com.jme3.audio com.jme3.audio.joal ...jme3tools.preview

    JME3 中文教程(ZBP翻译第一版)

    《JME3 中文教程(ZBP翻译第一版)》是一个专门为Java Media Engine 3 (JMonkeyEngine 3,简称JME3)爱好者和开发者准备的教程资源。JME3是一个开源的3D游戏开发框架,它基于Java编程语言,为开发者提供了高效、便捷...

    2015jme3指南

    《2015jme3指南》是一份关于Java Media Engine 3 (JME3)的详细教程,主要面向对游戏开发感兴趣的开发者。JME3是Java平台上的一个开源3D游戏开发框架,它提供了丰富的功能,使得开发者可以快速创建高性能的3D应用和...

    JME3学习文档

    ### JME3游戏开发引擎中文学习指南 #### 引言 JME3,全称jMonkeyEngine3,是一款开源的3D游戏开发引擎,专为Java开发者设计,旨在简化3D...随着对JME3更深入的学习,开发者将能构建更加复杂和丰富的3D游戏和应用。

    JME3中文教程(ZBP第一版)

    Java Media Engine 3,简称JME3,是一个基于Java的开源3D游戏引擎,专为开发高质量的2D和3D游戏而设计。它提供了丰富的功能,包括图形渲染、物理模拟、音频处理、网络通信等,使得开发者能够快速构建游戏应用。本...

    jme3游戏demo rise-of-mutants

    jme3利用Java的面向对象特性和丰富的库资源,为开发者提供了便捷的3D游戏开发环境。在“Rise of Mutants”这款游戏中,我们能够看到Java语言在游戏逻辑控制、对象管理、网络通信等方面的应用。 **3. 3D模型与场景...

    jme3-clj-aide:JMonkeyEngine3 + Clojure-Android + AIDE 示例项目

    同时,JME3还具有良好的社区支持,拥有丰富的教程和资源库,对于初学者和资深开发者都非常友好。 接下来是Clojure的角色。Clojure是一种运行在Java虚拟机上的编程语言,它的语法简洁,支持函数式编程,这使得代码更...

    JME商业游戏进阶二 (地表层的神秘面纱1)源代码

    《JME商业游戏进阶二 (地表层的神秘面纱1)源代码》这个资源主要涉及的是使用Java Media Engine (JME) 进行游戏开发的高级实践,特别是聚焦于构建游戏中的地表层系统。JME是Java平台上的一个高性能、轻量级的游戏开发...

    jme3材质基础知识

    其中,材质系统是jME3的核心部分之一,用于控制模型表面的外观,包括颜色、反射、透明度等属性。 材质在jME3中由`Material`类表示,它包含了多个`Texture`和`ShaderProgram`。`Texture`用于存储图像数据,如颜色、...

    JME程序设计实例教程

    Java Micro Edition(JME),又称为Java 2 Micro Edition,是Java平台的一个子集,主要用于开发和部署在资源有限的设备上的应用程序,如移动电话、PDA、智能家电等嵌入式系统。本教程以实例为导向,深入浅出地介绍了...

    java8看不到源码-JME3-JFX:用于JME的JFXGui桥接器,具有用于常见用例的有用实用程序

    JME3-JFX 用于 JME 的 JFX Gui 桥接器,具有用于常见用例的有用实用程序。 许可证是新的 BSD 许可证(与 JME3 相同) 二进制版本可在以下位置获得: ( ) ( ) 它也可以用作 maven 存储库(请参阅“设置我”按钮)。 ...

    JME3 JAVADOC

    JME和Java 3D具有类似的场景结构,开发者必须以树状方式组织自己的场景。JME有一套很好的优化机制,这使得它得运行速度要比Java 3D快很多。JME(java Monkey Engine),一个非常棒的Java 3D游戏引擎。

    JME教程.rar

    7. **性能优化**:学习在资源有限的环境下优化代码和内存管理的策略。 通过深入学习和实践这些知识点,你将能够利用JME的强大功能,开发出富有创新性的移动和嵌入式应用。在阅读本教程时,建议同时进行实际编码练习...

    JME的文件格式及支持的文件格式

    它支持多种文件格式,使得开发者能够方便地导入和管理游戏资源。以下是对JME3支持的文件格式的详细解释: 1. **j3o**:这是JME3的二进制3D模型或场景文件格式。使用这种格式,可以存储整个场景或者模型的数据,包括...

    JME (Java Math Expression):Java西班牙语数学表达式评估器-开源

    它还实现了强大的REPL模式,该模式允许您交互使用JME库实现的大多数语言功能,包括CSV,HTML,JSON和XML导入和导出。 可以在以下页面上查阅用户和开发人员文档:...

    JME初级教程(持续跟新)

    7. **场景管理**:JME3的场景图是一种组织3D对象的方式,允许你方便地管理和操作游戏中的元素。理解节点、分支和组件的概念,以及如何通过脚本语言(如NiftyGUI)创建用户界面。 8. **音频处理**:JME3支持音频播放...

    sandbox_jme3_jogl:使用jogl后端实验jme3

    8. **资源加载**:JME3提供了一些工具类来加载和管理纹理、模型、音频等资源。 9. **调试和日志**:利用JME3的DebugKeys或日志框架(如log4j)进行调试输出。 总的来说,"sandbox_jme3_jogl:使用jogl后端实验jme3...

    相关技术\游戏引擎,JME

    游戏引擎是开发电子游戏的核心工具,它为游戏开发者提供了一个集成环境,用于创建、管理和优化游戏内容。在本文中,我们将深入探讨游戏引擎的概念、重要性以及Java Media Engine(JME)这一特定游戏引擎。 首先,...

Global site tag (gtag.js) - Google Analytics