public virtual void Unequip(ToonBodyPart part)
    {
        if (!bodyParts.ContainsKey(part) || bodyParts[part] == null)
        {
            return;
        }

        foreach (Transform child in bodyParts[part].transform)
        {
            Destroy(child.gameObject);
        }
    }
    public virtual void Equip(ToonBodyPart part, string equipmentPath, bool autoUnEquip = true)
    {
        var newGameObject =
            Instantiate(Resources.Load(equipmentPath)) as GameObject;

        if (!Equip(
                part,
                newGameObject,
                autoUnEquip))
        {
            Destroy(newGameObject);
        }
    }
    public virtual bool Equip(ToonBodyPart part, GameObject equipment, bool autoUnEquip = true)
    {
        if (!bodyParts.ContainsKey(part) || bodyParts[part] == null)
        {
            return(false);
        }

        if (autoUnEquip)
        {
            Unequip(part);
        }

        var originalPosition = equipment.transform.position;
        var originalRotation = equipment.transform.rotation;

        equipment.transform.SetParent(bodyParts[part].transform);

        equipment.transform.localPosition = originalPosition;
        equipment.transform.localRotation = originalRotation;

        return(true);
    }