龙骨动画动态加载后,替换插槽资源无效。

  • Creator 版本:v2.3.0

  • 已经测试目标平台: Web

加载龙骨代码

    loadBones() {
        let name = "weapon_1004_show"
        const resources = [
            cc.url.raw(`resources/${name}_ske.json`),
            cc.url.raw(`resources/${name}_tex.json`),
            cc.url.raw(`resources/${name}_tex.png`),
        ];

        cc.loader.load(resources, (err, assets) => {
            let factory = dragonBones.CCFactory.getInstance();
            let data = JSON.parse(cc.loader.getRes(resources[0])._dragonBonesJson);
            factory.parseDragonBonesData(data);
            factory.parseTextureAtlasData(cc.loader.getRes(resources[1]), cc.loader.getRes(resources[2]));
        });
    }

更改插槽代码

   switchWeapon() {
          let factory = dragonBones.CCFactory.getInstance();
         let isok = factory.replaceSlotDisplay("weapon_1004_show",
             "weapon",
             "weapon_r",
             "weapon_1004_r",
             this.body_armature.getSlot('Layer 9'));
         console.log("is replase success = ", isok);
     }

最后log显示替成功,但是界面上没有显示(武器没有挂载成功)。

demoBoneTest.zip (2.6 MB)

感谢反馈,我们排查一下~

帮你改了一下,altas文件改一下名字,不要与纹理重名,加载atlas返回的资源并不是JSON,需要解析一下。
BoneTest 2.zip (1.1 MB)

多谢,问题已解决。

你好,请问一下,插槽显示对象可以改材质吗?现在好像是通用的一个材质,我想挂个shader上去,给不同的服装加效果。

引擎没有提供这个机制,如果要自定义插槽的材质,会涉及到下面这个源码的修改。
cocos\dragon-bones\assembler\simple.ts