管理项目资源

    Editor.Ipc.sendToPanel('scene', 'scene:new-scene');

    保存当前场景

    对场景数据修改完成后可以通过 Editor.Ipc 模块来保存当前场景:

    Editor.Ipc.sendToPanel('scene', 'scene:stash-and-save');

    我们的扩展包可能需要遍历多个场景并依次操作和保存,在上一节 中我们介绍了通过场景脚本访问引擎 API 和用户项目脚本的方法,要加载新场景,请使用:

    其中 _Scene 是一个特殊的单例,用来控制场景编辑器里加载的场景实例。
    传入的参数是场景资源的 uuid,可以通过下面介绍的资源管理器接口来获取。

    db://assets/path/to/scene.fire

    这样的形式表示。其中 db 是 AssetDB 的简称。 项目中 assets 路径下的全部资源都会被 AssetDB 导入到资源库(library)中,并可以通过 uuid 来引用。

    在扩展包的主进程中 url 和 uuid 之间可以互相转化:

    • Editor.assetdb.urlToUuid(url)

    此外如果希望直接使用资源在本地文件系统中的绝对路径,也可以使用 fspathToUuiduuidToFspath 接口,其中 fspath 就表示绝对路径。

    导入资源

    要将新资源导入到项目中,可以使用以下接口

    1. //main process
    2. Editor.assetdb.import(['/User/user/foo.js', '/User/user/bar.js'], 'db://assets/foobar', function ( err, results ) {
    3. results.forEach(function ( result ) {
    4. // result.parentUuid
    5. // result.url
    6. // result.path
    7. // result.type
    8. });
    9. });
    10. Editor.assetdb.import( [
    11. '/file/to/import/01.png',
    12. '/file/to/import/02.png',
    13. '/file/to/import/03.png',
    14. ], 'db://assets/foobar', callback);

    传入的 data 就是该资源文件内容的字符串。在创建完成后会自动进行该资源的导入操作,回调成功后就可以在资源管理器中看到该资源了。

    保存已有资源

    要使用新的数据替换原有资源内容,可以使用以下接口

    1. //main process or renderer process
    2. Editor.assetdb.saveExists( 'db://assets/foo/bar.js', data, function ( err, meta ) {
    3. // do something
    4. });

    如果要在保存前检查资源是否存在,可以使用

    在渲染进程,如果给定了一个目标 url,如果该 url 指向的资源不存在则创建,资源存在则保存新数据的话,可以使用

    1. //renderer process
    2. Editor.assetdb.createOrSave( 'db://assets/foo/bar/foobar.js', data, callback);

    当资源文件在 assets 中已经修改,而由于某种原因没有进行重新导入的情况下,会出现 assets 里的资源数据和数据库里展示的资源数据不一致的情况(如果使用 fs 模块直接操作文件内容就会出现),可以通过手动调用资源刷新接口来重新导入资源

    移动和删除资源

    1. Editor.assetdb.move(srcUrl, destUrl);

    关于这些接口的详情,请查阅 和 AssetDB API Renderer