关于spine setSlotTexture()换装无法自行创建attachment的问题及一种凑合的临时解决方案

v3.8.8
使用spine皮肤往往会遇到局部换装的问题,使用setSlotTexture的确可以切换一部分slot的贴图,但是当某slot本身不具备attachment时(例如换武器,spine导出结果可能只是手部留了一个占位slot,并没有在里面放置attachment),setSlotTexture无效,即使createNew=true。
我个人认为这是不合理的,setSlotTexture本身第三个参数createNew按我的理解就是用来克服上面的问题用的,但事实是这个参数的含义似乎和它的字面意思不符合:如果createNew=true,仍然不会在占位slot上自动创建attachment;如果createNew=false,更是会把整个spine贴图作为texture放在这个部位(完全不理解为什么会这样)。另外,开头提到的这个现象,即在spine中留slot占位符用来后续插入手持道具等,我觉得是很普遍的。
至于解决方式,最好的方法肯定是在spine导出的时候就不要放空slot占位了,放个小方块占个位置当attachment。然后我这里还有一些别的方法:
(没能成功)new一个regionAttachment放在这个slot上(用setAttachment),我也不知道出啥问题了,但就是不能成功显示,可能是new的对象没uv?
(凑合能用)从别的部位copy一个attachment放在这个slot上,let att = skel.findSlot(“xxx”).getAttachment(); skel.findSlot(“yyy”).setAttachment(att)。但这样会导致1. 旋转、移动、缩放也会抄xxx的,这三个玩意不明文对外开放修改,但好像留了一个后门att.x, att.y, att.rotation这些,ide里会显示不存在这个对象,但实际是有的,感觉这样做很不安全。但就算把上面这些赋为0也有偏差,得自己凑一个数值了(可能后续缩放的时候改中心点了)。2. 这个attachment疑似会失去绘制顺序,这个我没法解决,明明spine的绘制顺序是绑定在slot上的,理解不了

总之如果大家遇到这个问题至少能知道是slot的attachment不能留空,我记得前面有帖子有人提到过这个问题但没人回答。也希望这个问题能修复下,原生平台外改东西太蛋疼了,这个场景还是挺常见的。
cocos的spine对外开放的接口还是太少了,好多功能感觉实现起来甚至没手搓c++ spineruntime舒服(刚学cocos两天的吐槽)