Spine 部件贴图拆分功能,没有支持二进制格式

  • Creator 版本:2.3.1

  • 目标平台: 模拟器/ IOS/ Android

  • 详细报错信息,包含调用堆栈:

  • 重现方式:

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

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:100%

  • 额外线索:

使用spine skel二进制格式时,当spine runtime缺少某部件贴图时,会直接闪退。

麻烦官方引擎团队能安排修复一下。

@panda@huanxinyin

感谢反馈,我们排查一下。

缺少某部件贴图?这个怎么理解,是贴图拆分没有解析出来?还是你自己资源丢失导致的崩溃?

V2.3.0版本的Engine Fixes里面写到:支持 Spine 部件贴图拆分,增强换装功能 #5711。
提交的改动里面写的是:支持部件贴图拆分,增强换装功能。
(原spine runtime当缺少某部件贴图时,会报错,这里修改为直接跳过或返回空值,当用户想换装时,可根据需要只提供某个部件的贴图图集)
关联pr:cocos-creator/cocos2d-x-lite#1924

就是当spine中使用到的资源,不在图集中时,不会直接报错。
按照你的提问,回答应该是自己资源丢失导致的奔溃。

SkeletonJson.cpp中解析spine是做了兼容的。

SkeletonBinary.cpp中没有处理这种情况,因为二进制是边读取边赋值的,所以如果attachment为NULL时直接continue,会导致二进制文件读取错误。

spine.js中的SkeletonBinary解决了这个问题,先全部读取,再newAttachment,attachment为NULL,直接continue。

收到,我们补充修复下~ :3:

抱歉,这个是spine的runtime中的问题,我们原则上是不改他们的代码的,否则一旦后续升级,需要同步的地方太多。你可以本地自定义一下spine的代码,或者修复下资源的问题

好的。希望官方能注明一下这个问题,否则官方的ChangLog会有误导的作用,毕竟注明了是支持Spine部件贴图拆分功能的,大家不知道是只支持json格式,skel格式不支持。

这是特殊情况导致的吧?正常资源应该是不会丢失的。引擎并不是不支持 skel 换装,只是 skel 不兼容资源丢失的情况。

原生端Spine二进制,不兼容SpineIDE输出时选择忽略空白图片。

Spine二进制输出时,确保没有勾选这个选项