如何控制骨骼插槽显示或隐藏

版本:2.0.1
系统:win7

骨骼 下面有三个插槽
请问如何通过控制显示或隐藏
结构如图:

@jager @panda 请指教

@ 错人了 @jare

你指的是龙骨动画还是spine

大佬,这里求问一下spine槽位的显示和隐藏,
用现有API该如何实现?@zzf_Cocos

这样貌似就可以了:

private changeCloth(skeleton: Skeleton, slotName, targetSkinName, targetAttaName): void
{
let slot = skeleton.findSlot(slotName);
let atta;
if (targetAttaName != null && targetAttaName != “”)
{
let skeletonData = skeleton.skeletonData.getRuntimeData();
let slotIndex = skeletonData.findSlotIndex(slotName);
let skin = skeletonData.findSkin(targetSkinName);
atta = skin.getAttachment(slotIndex, targetAttaName);
}
else
atta = null;

slot.setAttachment(atta);

// skeleton.setSkin(targetSkinName);
// skeleton.setAttachment(slotName, targetAttaName);

}

你的方案是可行的,直接将 attachment 数据清空就看不到了。

1赞

creator 2.0.5 slot.setAttachment(null) 提示setAttachment这个方法没有,而且也没有效果,slot无法隐藏,有其他方法吗?

应该是有的。你排查一下代码,

有这个方法setAttachment(slotName: string, attachmentName: string): void;
我去底层也看到当attachmentName=null的时候执行slot.setAttachment(null).但是没有效果,我的那个slot还是显示的。是不是那个slot有序列动画才隐藏不了?那怎么隐藏呢?

你这改的底层吗?我设置slot.setAttachment(null);没有效果,是不是我的slot里面图有帧动画的原因

我没有改底层。
我这边是有效果的。
你要隐藏的部位,美术导出的时候不应该K帧。
然后这个部位才能换装或者选择隐藏。

那我猜测是对的,我要隐藏的部分有动画,我用了阿尔法通道去隐藏的

我看龙骨的文档,将插槽设置为-1也可以。
let asd = this.node.getChildByName(‘dragonbones’).getComponent(dragonBones.ArmatureDisplay);

let ccc:dragonBones.Armature = asd.armature();
ccc.getSlot(‘A’).displayIndex = -1;

当一次掘墓者把
改透明值如果重新显现 uv不一致会导致变色
.setAttachment(null);还是使用这个方便更为稳妥一些
如果需要显现原来的图片就提前保存Attachment到时候重新赋值就好了