Unity DragonBones 龙骨隐藏指定插槽

430 阅读1分钟

目的

根据等级之类的来显隐龙骨上的插槽,以丰富表现。

实现

尝试了Slot对象的visible设置成flase,没有效果。设置displayIndex=-1,部分部件有效果,但是一些部件被动画控制的,就会又被显示出来。因为displayIndex属性也是会被动画控制。根据官方的论坛说明,可以设置displayController的名称。

    private void SetDragonSlotHidden(bool isActive)
    {
        if (!string.IsNullOrEmpty(m_SlotHiddenStr))
        {
            if (isActive)
            {
                var slotNames = ListEx.StringToArrayString(m_SlotHiddenStr);
                foreach (var slotName in slotNames)
                {
                    var slot = m_ArmatureComponent.armature.GetSlot(slotName);
                    if (slot != null)
                    {
                        slot.displayIndex = -1;
                        slot.displayController = "随意的名称";
                    }
                }
            }
            else
            {
                var slots = m_ArmatureComponent.armature.GetSlots();
                foreach (var slot in slots)
                {
                    slot.displayIndex = 0;
                    slot.displayController = null;
                }
            }
        }
    }