求教大佬resources.load动态加载spine怎么写?

 let image = "http://localhost/download/spineres/1/1.png";
        let ske = "http://localhost/download/spineres/1/1.json";
        let atlas = "http://localhost/download/spineres/1/1.atlas";
        assetManager.loadAny([{ url: atlas, ext: '.txt' }, { url: ske, ext: '.txt' }], (error, assets) => {
            assetManager.loadRemote(image, (error, texture: Texture2D) => {
                let asset = new sp.SkeletonData();
                asset.skeletonJson = assets[1];
                asset.atlasText = assets[0];
                asset.textures = [texture];
                asset.textureNames = ['1.png'];
                // skeleton.skeletonData = asset;
            });
        });

假设spine放在resources文件夹中,上面是远程加载的代码https://docs.cocos.com/creator/manual/zh/asset/spine.html#%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9C%E7%A8%8B%E5%8A%A0%E8%BD%BD-spine

有通过resources.load()加载spine的方法吗?

// ...
private spin : sp.Skeleton = null!;
// ....
bundle.load(path, sp.SkeletonData, (err, skeletonData)=>{
         this.spin.skeletonData = skeletonData;
});

之前尝试了下 没有成功
后来搞了个折衷的办法 先做个包含了spine动画的预制体,然后动态加载预制体

感谢大佬,成功了,家人们

resources.load(path, sp.SkeletonData, function (err, ske) {
               let node = new Node(); 
               var data =node.addComponent(sp.Skeleton) 
               data.skeletonData = ske;
               node.parent = this.nodeListRoot;
               node.layer = Layers.Enum.UI_2D;
        }.bind(this))

image

1赞

path 怎么写的? 是一个路径吗?

如果是加载二进制的话,该如何加载T_T, 默认是json

意思是加载json?image

后来我试出来了,
cc.resources.load(skill/myskillA , sp.SkeletonData, (err , asset ) => { if(err) { return;} 自己的skeleton.SkeletonData = asset; this.skeleton.setAnimation(0, “run”) } )

skill/myskillA这里是
skill 文件夹下面有 mySkillA.png mySkillA.atlas skill/myskillA.skel 三个文件

这里不需要写后缀,会引擎自动识别 我是 2.4引擎版本

大佬们,动态加载sp.SkeletonData会出现卡顿的问题,有没有大佬遇到过