3.8.1正式版 你们的spine都还好吗?

  • Creator 版本: 3.8.1

  • 目标平台:IOS,Android

  • 重现方式:从0925的版本更新到正式版之后,部分spine不稳定出现闪退的情况,主要就是两种形式,一种是直接闪退 另一种比较诡异,内存从600m突然暴涨到3G 然后挂了

  • IOS必现: 15:36:32 [WARN]: Triple buffer enabled for infrequently-updated buffer, consider using MemoryUsageBit::DEVICE instead
    15:36:32 [DEBUG]: Init Stacktrace: - [0]anonymous@src/cocos-js/cc.js:28492

  • [1]tick@src/cocos-js/cc.js:36240
  • [2]_updateCallback@src/cocos-js/cc.js:37308
  • [3]anonymous@src/cocos-js/cc.js:36368
  • [4]tick@jsb-adapter/web-adapter.js:612
  • 之前哪个版本是正常的: 3.8.1 0925测试版

原生平台吗?

image 我的安卓也是随机闪退,报这个错误,3.8.1 测试版 (0926版本)没发现,升级正式版本开始出现了。

对 iOS android都是打包后遇到的 web上没遇到

还有这个

我们试着重现一下。如果有必现的 demo 和步骤的话更好。

我这边比如容易闪退点=》如果将skeletonData 设置为null,但是不移除(放对象池或者保留在界面都有可能),基本是大概率会闪退。调用clearTracks和clearAnimation 不移除好像也有。(或者设置Spine组件enble=false,但是又调用spine方法也有概率好像,这个不确认)

在3.8.0就有这个问题,这边在复用sp.Skeleton重新设置 skeletonData 后调用setAnimation方法就有概率会闪退,后面我对象池直接存储整个node,只在第一次生成赋值 skeletonData 就不闪退了

嗯。赋值null有概率闪退这个3.8.0就会,但是3.8.1感觉情况变多了。比如调用clearTracks和clearAnimation 不移除,之前好像不会。现在就有概率。还有一种情况不知道是spine还是声音导致,跑着跑着有概率内存突然爆掉,一瞬间600M冲倒2G以上,闪退。目前还是排查

不光3.8.0有这个问题,3.5.2也有这个问题。这个问题各版本一直有,论坛里面也有很多反馈这个问题的,但是他们就是没有重视过这个问题

遇到过,3.8.1 Spine WASM 报错,浏览器预览和构建后(Web-Mobile)都会报错。
情形是,同一个 Spine组件对象,切换了骨骼数据后,出现了报错卡死现象。
后来的解决办法是,切换骨骼数据时,把之前的Spine组件对象销毁,然后重新创建一个新的使用,问题暂时得到解决。

是否是Spine组件切换骨骼数据必现这个问题(用代码切换到一个完全不同的动画),我倒是没有时间做这个测试,上面是我遇到的问题和暂时解决办法。

目前我从论坛的反馈和自己的实测来看,确实是spine组件切换骨骼数据就会必现。二次赋值重复使用就会报错。这是一个蛮严重的问题,而且挺好复现的问题。官方倒是从来没重视过

能提供demo?
我用Cocos官方的测试例3.8分支, SpineBoy场景,替换SkeletonData为SpineAttach测试的SkeletonData(raptor-pro.json),并未复现;android,windows都测试了。
测试代码:

  var uuid = '2fUAqJ6AFIHJBlJd2RgrPQ'; // raptor-pro.json
        if (this._index % 2 === 1) {
            uuid = 'c93GrAii1HZ5OPHn9OWGBy'; //spineboy-pro.json
        }
        this._index += 1;

        assetManager.loadAny(uuid, (err, assets) => {
            var skeletonData = assets as sp.SkeletonData;
            // this.spine!.clearTracks();
            // this.spine!.clearAnimation();
            this.spine!.skeletonData = null;
            this.spine!.skeletonData = skeletonData;
            this.spine!.setAnimation(0, "walk", true);
        });

spine最后都用二进制,二进制会多很多问题

设置spine的时候,如果spine节点是false状态,设置完skeletonData 在active=true,spine不显示。

这个似乎2.4.x版本也有,当时的解决办法就是显示在设置 :rofl:

2赞

web-mobile和web-desktop 3.8.1 spine.js 文件名没变,而内容变了,帮忙确认是否你们存在相同问题,我这边测试过多次,确定有问题。

不同平台的md5不同,很正常吧

这里表述有歧义,正确表述为 web-mobile 3.8.1 spine.js和3.8.0的spine.js 文件名没变而内容变了,此举将导致已有缓存的浏览器错误。

我已经切回3.7.4了 spine 问题太多…