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

我发的这个问题,3.8.6也有。从论坛上看的话3.8.3开始出现的。现在更新到3.8.7了还是存在的

如果是这个,那是使用的问题;引擎没法修改

是的。是使用问题,不需要修改。但是我尝试把销毁的放进去使用并不会报错呢。感觉报错不是使用了销毁的sp.SkeletonData问题

image
发现还是报错,偶尔出现。


我trycatch了一下,终于报错了,发现model为空,往前推,skeleton是可用的,没有被销毁。
看一下,这个报错原因一般是什么呢

如何复现? 有demo?

没有demo,我是一直玩,然后把断点放进去才有的。不清楚是怎么复现的。
游戏里面的spine会设置透明度0~1,放缩值0~1,透明度为0的时候也会设置enable=false,销毁也会。

断点过程可能会改变时序,不是很准确

我是断点到trycatch里面的,截图的那几个步骤没有异步的发生。所以按理来说是不会打断的,只有发生错误的时候才进入断点


大佬,我现在断点必定报错了,有什么方法可以查看是什么引起的吗?

你看下destroy是否有调用吧


他所在的组件的 isValid是true的


这里发现一个问题,cache的和spinedata内的cache不一样!!!


果然是不一样的,这里的cache没清掉? 动作已经是空的了,但是还有cache

更换更换skeletonData的时候,this._animCache应该也要置空吧!
置空后,添加兼容
image

1赞

我好像找到问题了,看一下解决方案,一起跑跑看

被destroy掉的cache,wasm抛出一个标识错误,然后兼容掉才好吧。这种问题太难找了。
目前应该就是_animCache没有被换掉,且新的spine还没播放动作,然后旧的_animCache已经被销毁了,导致了报错。

1赞

嗯,后面的版本修复

这个问题解决了吗

目前H5和小游戏上暂时没发现报错了。

请教一下改了哪些地方呢

可以看一下上面的【解决方案】。我改了引擎的源码