List not showing dropdown in inspector

I tried some different approaches for this, I don’t like the current way I assign different attacks.
Right now I have the four variables stored in another script called BaseAttack that is no monobehaviour
then I make a new class for each attack and like this

public class Kick : BaseAttack
{
public Kick ()
    {
        attackName = "Kick ";
        attackDescription = "Kick ";
        attackDamage = 1f;
        attackCost = 0;
    }
}

this is just so messy and takes a long time to do and therfore I wanted to make one script where they are all stored and then attached this script to the GameObject and use the dropdown menu in the inspector to select the attack and save it as a prefab for each named enemy.
but I don’t get the dropdown menu I just get the fields where you need to type what it is.

so this is my current approach I started out with enum but I don’t know how I would assign each enum 2 strings and 2 floats, so I’m trying with List instead.

   public class AttacksInOneScript : MonoBehaviour {
    
        public class Kick : MonoBehaviour
        {
            public string attackName;
            public string attackDescription;
            public float attackDamage;
            public float attackCost;
    
            public Kick()
            {
                attackName = "Kick";
                attackDescription = "Kick";
                attackDamage = 2f;
                attackCost = 0;
            }
        }
    
        public class HighKick : MonoBehaviour
        {
            public string attackName;
            public string attackDescription;
            public float attackDamage;
            public float attackCost;
    
            public HighKick()
            {
                attackName = "HighKick";
                attackDescription = "HighKick";
                attackDamage = 3f;
                attackCost = 0;
            }
        }
    
        public List<AttacksInOneScript> attacks = new List<AttacksInOneScript>();
    
    }

Hey there,

what you are probably searching for is an Enumeration.
Take a look here for reference.

Define some enum like this somewhere next to a class (best in a file that is somewhat related so you find it again easily :))
enum Attack_E {Kick, HighKick, Lowkick};

Then you can use Attack_E as variable type. When adding a public variable to a script you will have a dropdown with all defined options of this enumerations in the editor.

If you want to have the integer index of the enumerations you have to cast you variable containing the type into an int like this:

		Attack_E myAttack = Attack_E.HighKick;
		int highkick_index = (int)myAttack;

For comparison you can simply check a type like this:

        Attack_E myAttack = Attack_E.HighKick;
		if(myAttack == Attack_E.HighKick)
			//True

Hope this helps. If you have any questions feel free to ask.

Edit: If you want to automatically assign variable values based on you attack selection i’d simply add some dictionary containing values somewhere that map to a certain enumerationvalue.