Custom Editor with enum problem!

Hi, i have this ‘item’ inspector so i can make new items. The problem however is,
i have 2 enum types in there:

One is called Item Type, you can choose from CARD or ITEM in here, when you choose CARD
it shows you the fields below the separator, but whenever i change Item Type to ITEM again, the fields (Extra Damage, Extra Health, Extra Stamina) never go away…
They just stay where they are…


As you can see they still inherit the Card Type ‘Mixed’… I have no idea how i would change this,

this is my script for the inspector:

[CustomEditor(typeof(Item))]
public class CardScriptEditor : Editor
{
    public override void OnInspectorGUI()
    {


        Item myItem = (Item)target;
        EditorUtility.SetDirty(target);

        EditorGUILayout.LabelField("Item name", myItem.name, EditorStyles.boldLabel);
        myItem.name = EditorGUILayout.TextField("Item Name", myItem.name);
        myItem.itemTypes = (Item.itemType)EditorGUILayout.EnumPopup("Item Type", myItem.itemTypes);
        string selectedType = myItem.itemTypes.ToString();

        myItem.icon = (Sprite)EditorGUILayout.ObjectField("Sprite", myItem.icon, typeof(Sprite), allowSceneObjects: true);
        GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); // USE AS SEPARATOR
        switch (selectedType)
        {
            case "Item":

                // myItem.extraSlot = EditorGUILayout.IntField("Item Slot(s)", myItem.extraSlot); //Placeholder

                break;
            case "Card":

                myItem.cardTypes = (Item.cardType)EditorGUILayout.EnumPopup("Card Type", myItem.cardTypes);
                string cardTypes = myItem.cardTypes.ToString();
                break;

            default:
                break;
        }


        switch (myItem.cardTypes)
        {
            case Item.cardType.Inventory:

                myItem.extraSlot = EditorGUILayout.IntField("Item Slot(s)", myItem.extraSlot);

                break;
            case Item.cardType.Damage:

                myItem.extraDamage = EditorGUILayout.IntField("Extra Damage", myItem.extraDamage);

                break;
            case Item.cardType.Health:
                myItem.extraHealth = EditorGUILayout.IntField("Extra Health", myItem.extraHealth);
                break;

            case Item.cardType.Stamina:
                myItem.extraStamina = EditorGUILayout.IntField("Extra Stamina", myItem.extraStamina);
                break;

            case Item.cardType.Mixed:
                myItem.extraDamage = EditorGUILayout.IntField("Extra Damage", myItem.extraDamage);
                myItem.extraHealth = EditorGUILayout.IntField("Extra Health", myItem.extraHealth);
                myItem.extraStamina = EditorGUILayout.IntField("Extra Stamina", myItem.extraStamina);
                break;

            default:
                break;
        }



        /*
        EditorGUILayout.LabelField("Warning", EditorStyles.boldLabel);
        EditorGUILayout.HelpBox("Card expansion still work in progress!", MessageType.Warning);

        EditorGUILayout.HelpBox("Some features are not working correctly yet!", MessageType.Error);
      
        */
        //base.OnInspectorGUI();
    }
}

Thank you so much for every reply!

-Luc

You could do this by wrapping the cardTypes switch in an if statement, or moving it into the previous switch. But you could simplify it all a bit, like this:

Item myItem = (Item)target;
EditorUtility.SetDirty(target);

EditorGUILayout.LabelField("Item name", myItem.name, EditorStyles.boldLabel);
myItem.name = EditorGUILayout.TextField("Item Name", myItem.name);
myItem.itemTypes = (Item.itemType)EditorGUILayout.EnumPopup("Item Type", myItem.itemTypes);

myItem.icon = (Sprite)EditorGUILayout.ObjectField("Sprite", myItem.icon, typeof(Sprite), allowSceneObjects: true);
GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); // USE AS SEPARATOR


if(myItem.itemTypes == Item.itemType.Item)
{
    // myItem.extraSlot = EditorGUILayout.IntField("Item Slot(s)", myItem.extraSlot); //Placeholder
}
else
{
    myItem.cardTypes = (Item.cardType)EditorGUILayout.EnumPopup("Card Type", myItem.cardTypes);

    switch (myItem.cardTypes)
    {
    case Item.cardType.Inventory:

        myItem.extraSlot = EditorGUILayout.IntField("Item Slot(s)", myItem.extraSlot);
        break;
    case Item.cardType.Damage:

        myItem.extraDamage = EditorGUILayout.IntField("Extra Damage", myItem.extraDamage);
        break;
    case Item.cardType.Health:
        myItem.extraHealth = EditorGUILayout.IntField("Extra Health", myItem.extraHealth);
        break;

    case Item.cardType.Stamina:
        myItem.extraStamina = EditorGUILayout.IntField("Extra Stamina", myItem.extraStamina);
        break;

    case Item.cardType.Mixed:
        myItem.extraDamage = EditorGUILayout.IntField("Extra Damage", myItem.extraDamage);
        myItem.extraHealth = EditorGUILayout.IntField("Extra Health", myItem.extraHealth);
        myItem.extraStamina = EditorGUILayout.IntField("Extra Stamina", myItem.extraStamina);
        break;

    default:
        break;
    }
}