spine经常出现报错 table index is out of bounds

引擎版本:3.8.6
经常出现table index is out of bounds报错。
image
公司测试玩,一天能莫名其妙出两三次。要死啊!!!

:nauseated_face:有大佬吗?一般是什么情况出现吗?怎么样可以避免?
@minggo @dumganhar

更新3.8.7引擎后,变成这个报错了

引擎的测试组不知道在干嘛
这个报错我这边必现的
:sweat_smile:

呜呜呜,我才更新,3.8.7才更新的吗,就要我合并pr

我就是升级到了3.8.7,
发现这个报错必现
然后回退了
现在还是3.8.5 :sweat_smile:

我3.8.6. 但是会偶现 table index is out of bounds的报错

不应该吧,要是这样的话,那用spine的谁还敢用这些版本

:joy: 是不应该但就是报错了。论坛也有类似的报错

还好我用2.0的 :rofl:。大家先蹚河,我随后就到 :joy:

我们一般会以 官方测试例,测试没问题才会发布。可能测试例无法完全覆盖用户的使用场景,开发者如果有更好的能用来复现的demo,也可以提pr 到 cocos-test-project 仓库;避免后面继续踩坑

还是有报错,还是在updateAnimation之后。很偶现,不知道怎么报错的

一般这个错是c++对象被释放,然后继续调用。是否有动态创建的slot, skin, attachment? 可以往这方面定位

目前spine没有对这些进行操作。项目中目前几个特殊的点就是:
1.人物的动作数比较多,大概80个;
2.spine会更换材质
3.每隔一段时间,会销毁没有使用的spine资源
4.清理的话,会有只清理sp.SkeletonData,不清理sp.Skeleton的情况;
这些点,哪里会有问题吗?

sp.SkeletonData清理后,sp.skeleton不能使用,因为skeleton会依赖skeletonData

this.skeletonData = null; 这样子也不行吗?

this.skeleton 对应的调用不能再调用;如果是调用 skeletonData ->asset 的 destroy,则需要确保skeleton组件不能再被执行update

了解了,如果 【skeletonData ->asset 的 destroy】 的话,我需要调用skeleton组件的 enable=false

最近用3.8.7的版本,好多人都遇到spine的问题

发现还是有报错。我尝试把一个已经销毁了的赋值到spine.skeletonData = 已经销毁的skeletonData 。这样并不会出现报错。应该是有其他的原因