public void Use(PlayerSkillKeySlotEnum slotEnum)
    {
        Skill skill = GetSkill(slotEnum);

        if (skill == null || (isUsingSkill && !IsDoingCombo))
        {
            return;
        }
        if (currentSkill != null && currentSkill != skill)
        {
            currentSkill.Stop(b => isUsingSkill = b);
        }
        currentSkill = skill;
        skill.Use(b => isUsingSkill = b, skill.IsFirstSkill);
    }
    public bool DeleteSlot(PlayerSkillKeySlotEnum slotEnum)
    {
        if (IsSlotEmpty(slotEnum))
        {
            return(false);
        }

        playerInventory.GetSkill(skillSlots[(int)slotEnum]);
        if (OnDeleteSlot != null)
        {
            OnDeleteSlot(skillSlots[(int)slotEnum], true);
        }
        skillSlots[(int)slotEnum].SetOwner(null);
        skillSlots[(int)slotEnum] = null;
        return(true);
    }
    public bool SetSlot(PlayerSkillKeySlotEnum slotEnum, Skill skill)
    {
        if (IsSlotEmpty(slotEnum))
        {
            // 슬롯이 비어있음
            skillSlots[(int)slotEnum] = skill;
            skillSlots[(int)slotEnum].SetOwner(player);
            if (OnSetSlot != null)
            {
                OnSetSlot(skillSlots[(int)slotEnum], false);
            }
            return(false);
        }

        // 슬롯에 이미 스킬이 있음
        DeleteSlot(slotEnum);
        skillSlots[(int)slotEnum] = skill;
        skillSlots[(int)slotEnum].SetOwner(player);
        if (OnSetSlot != null)
        {
            OnSetSlot(skill, true);
        }
        return(true);
    }
 public Skill GetSkill(PlayerSkillKeySlotEnum slotEnum)
 {
     return(IsSlotEmpty(slotEnum) ? null : skillSlots[(int)slotEnum]);
 }
 public bool IsSlotEmpty(PlayerSkillKeySlotEnum slotEnum)
 {
     return(skillSlots[(int)slotEnum] == null);
 }