3.8.1使用骨骼动画动态替换skeletonData,引擎报错

  • Creator 版本: 3.8.1

  • 目标平台: chrome浏览器

  • 重现方式:
    用代码动态替换骨骼动画资源,当这个sp.Skeleton所在的节点或者父节点active为false时,必然会报错
    let skeleton = target.getComponent(sp.Skeleton);

          if (!skeleton) {
    
              console.error("The node doesn't have a Skeleton component.");
    
              return;
    
          }
    
          skeleton.skeletonData = spineData;
    
          // skeleton.animation = animation;
    
          skeleton.premultipliedAlpha = premultipliedAlpha;
    
          // skeleton.loop = loop;
    
          skeleton.clearTracks();
    
          skeleton.setAnimation(trackIndex, animation, loop);
    

报错信息
index.js:1 ErrorEvent
(anonymous) @ index.js:1
skeleton.ts:837 Uncaught TypeError: Cannot read properties of null (reading ‘data’)
at Skeleton.setAnimation (skeleton.ts:837:42)
at Object.onComplete (SpriteLoader.ts:54:22)
at completeCallback (ResMgr.ts:79:45)
at utilities.ts:310:13
at misc.ts:169:13
at handleRAF (utils.ts:212:21)

  • 首个报错:

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率:

@jare 大佬麻烦关注下这个问题,我该怎么解决?

image
image
补充一下:触发时机:1.动画所在节点或者父节点的active为false。2.编辑器中使用的动画资源和代码动态加载的资源为同一个时。引擎必报错。

有解决吗 我升级到3.8.1也碰到了 setAnimation()报错 Cannot read properties of null (reading ‘data’)

需要动态设置动画资源的,编辑器中的动画资源设为空就可以了

执行下
ske.__preload()
可以解决这个问题

1赞