3.7.2 spine 问题

3.7.2 如果是动态加载的spine资源,是显示不出来的,大量用到spine的项目谨慎升级,而且回退到3.7.1会出一大堆问题,(官方能不能好好维护一下spine模块,包括换装和稳定性等。。。。spine可是2d项目的一个重要功能,别光盯着3d)

2赞

:crazy_face:希望3.9可以长期只修复bug不更新特性

关键是,3.7.1是没问题的,为什么一更新版本就会出现新的问题。很费解

你好,请问可以提供一下测试的 spine 资源吗?我们发布时是有测试动态加载 spine 的,还请提供一下能复现问题的代码片段,谢谢~

不,这个是我测试不精确,不是动态加载的问题,而是在3.7.2里面有的spine显示异常,爆出 Cannot read property ‘width’ of undefined的警告,导致显示不出来,你们官方有人说会在3.7.3修复

为什么不是3.17.x 刚好与2dx对应

早上刚刚更新 3.7.2 , 所有的spine都看不见了,只能退回3.7.1 。 : :thinking:

是的,有的spine在编辑器和h5平台显示不出来,但是在原生平台能正常显示,不过3.7.1原生平台遇到的spine问题,在3.7.2是修复啦,可能修复的过程改出了这个bug。

一年就两个大版本号,3.17?? :scream:


可以合并这个 pr 试试
1赞

这正常吧,我们自己开发游戏不也是吗,这把bug解决了,但是又产生了新的bug

反正3.7.2版本中,spine遇到的问题都修改啦,就是编辑器中,有的spine数据中的width和height属性为空,合并pr就可以啦。测试了几天还是可用于生产的,暂时没遇到其他问题。

给spine打一个修复补丁. 这样不用改cocos源码. 维护也方便点.
//修复cocos 解析spine 没有宽高导致渲染异常的bug

static repairSpineData(){

    //拿到原型链函数

    var oldFunc =sp.Skeleton.prototype["setSkeletonData"];

    //重写 sp.Skeleton.prototype.setSkeletonData函数 .

    sp.Skeleton.prototype["setSkeletonData"] = function(skeletonData){

        if(skeletonData.width==null){

            skeletonData.width = 10;

            skeletonData.height = 10;

            skeletonData.x = 5;

            skeletonData.y = 5;

        }

        //这里的this指针必须回调过去. 否则会出现作用域异常的问题

        oldFunc.call(this,skeletonData);

    }

}