How do I create a bunch of player abilities, with their own properties?

What I’m trying to do is create some kinds of list or enum to hold a bunch of premade player abilities. Currently I have:

public enum Abilities
{
	NormalShoot,
	MultiShot,
	Blink,
	FreezingFire,
	RapidFire,
	SelfRepair,
}

Which was okay when using abilities was extremely basic - I could just use Abilities.MultiShot when I was trying to use that ability. The issue is I want some abilities to have an energy cost associated with them.

The only solution I could come up with was having an array of Ability objects (a class I would create with all the properties in in), but I don’t think it’s a good way to go about this.

What would be the best way to go about this?

Create a property drawer.

Unity Technologies also has a tutorial on how to create a property drawer.

It’s an oldie but still a goodie, especially for someone learning C#:

Best to start from 1 you will learn a lot.