Hello! I wanted to make a very modular ability system similar to DOTA 2 Ability Draft mode. In this mode, each player only has 4 ability slots that can be filled by choosing from a wide pool of abilities. The hotkey to activate these abilities always the same: Q for ability 1, W for ability 2, E for ability 3, and R for ability 4. Each ability has a completely different script and behavior and NOT just a variation in numbers.
Goal:
I expected to create a Player object with 4 slots starts empty at the beginning of the level. The player will find new abilities and equip it to these ability slots. They can also remove them and move it to another slot if they want to. To activate these abilities, the player needs to press key 1, 2, 3, or 4.
Implementation:
I’m thinking of creating separate scripts for each ability. Then somehow creating a reference to these scripts in my Player inspector. A script in Player gameobject will handle inputs of 1-4 keys and trigger the ability according to the slots.
Problem:
I somehow can’t reference Ability scripts in the Parent inspector.
What I’ve tried:
I tried to create an abstract PARENT class for my abilities, where a function called “ActivateAbility()” is then being overwritten by unique abilities. In theory, this should allow me to just call ActivateAbility() to run the function. I’m guessing ScriptableObject is what I’m looking for, but as far as I know, you also can’t reference a script in a ScriptableObject.
Any help is appreciated.

