cocos 3.8.3版本 远程下载spine资源问题

反馈时请提供以下信息:

  • Creator 版本:3.8.3
  • 目标平台:火狐浏览器
  • 重现方式:远程加载替换spine 的资源文件 png、json、atlas文件,给预设实例对象替换skeletonData文件无效果,在游戏画面里不显示,在编辑器模式下,手动选中当前对象,改对象的skeletonData栏目里为空,要么就是为MIssing Asset
  • 首个报错: 没有报错
  • 编辑器操作系统: windows 10
  • 重现概率:100%-

代码: public static resourceSpine(spine: sp.Skeleton, assetUrl: string, fileName: string, defaultAmin: string) {
if (!assetUrl)
return;

    if (this.spineCache.has(assetUrl) && spine) {
        spine.skeletonData = this.spineCache[assetUrl];

        spine.premultipliedAlpha = false;

        if (spine.node)
            spine.node.setScale(1, 1, 1);

        if (defaultAmin)
            spine.setAnimation(0, defaultAmin, true);

        return;
    }

    let imageUrl: string = assetUrl + "/" + fileName + ".png";
    let skeUrl: string = assetUrl + "/" + fileName + ".json";
    let atlasUrl: string = assetUrl + "/" + fileName + ".atlas";

    assetManager.loadAny([{ url: atlasUrl, ext: '.atlas' }, { url: skeUrl, ext: '.json' }], (error, assets) => {
        if (error) {
            console.error("加载骨骼动画失败,atlasUrl:" + atlasUrl + "  skeUrl:" + skeUrl, "错误," + error);
            return;
        }

        assetManager.loadRemote(imageUrl, (error, imageAsset: ImageAsset) => {
            if (error) {
                console.error("加载骨骼动画图片失败,imageUrl:" + imageUrl);
                return;
            }

            let asset = new sp.SkeletonData();

            asset.skeletonJson = assets[1];
            asset.atlasText = assets[0];


            let texture = new Texture2D();
            texture.image = imageAsset;
            asset.textures = [texture];

            asset.textureNames = [fileName + '.png'];
            //   asset.uuid = ske; // 可以传入任意字符串,但不能为空

           console.log("资源列表:" + asset.uuid, "动画Json:" + asset.skeletonJson, "动画文档:" + 
                       asset.atlasText, "动画图片数据:" + imageAsset.data);

            this.spineCache.set(assetUrl, asset);

            spine.skeletonData = asset;

            spine.premultipliedAlpha = false;

            spine.node.setScale(1, 1, 1);

            if (defaultAmin)
                spine.setAnimation(0, defaultAmin, true);
        });
    });

}
-------------加载资源代码
private loadSpine(assetUrl: string, fileName: string, defaultAmin: string) {
ResManager.resourceSpine(this.node.getComponent(sp.Skeleton), assetUrl, fileName, defaultAmin);
}
---------------------------------------------以上是当前使用代码--------------------------------------------

这里是一些日志输出: 资源已经加载成功了。
[PreviewInEditor] 资源列表:zWEwojl1oR0 动画Json:[object Object] 动画文档cashier.png
size: 172, 75
format: RGBA8888
filter: Linear, Linear…动画图片数据:[object HTMLImageElement].
但是游戏对象的Skeleton组件skeletonData属性为Missing Asset。
有人遇到这个问题吗?还是说是新版本的BUG?目前没测试过其他版本

找到问题: assetManager.loadAny([{ url: atlasUrl, ext: ‘.txt’ }, { url: skeUrl, ext: ‘.txt’ }], (error, assets) 全改成txt,并且spine导出也要对应官方版本,如果是4.2版本spine导出的时候降版本导出 会导致图片下载回来变成马赛克图片。高版本spine自己卸载重新下低版本

1赞

spine不用重新下载,有个版本选择功能,最新版的也可以自由切换到3.8版,当然导出也需要选择3.8。

1赞