Unity3d. Как организовать систему скиллов?
Вопрос некорректный - вы чуть ли не просите спроектировать всю систему. 
Как бы я делал (взял из головы и не проверял на практике) - базовый класс для Скила (в нём сидят основные действия, присущие любому скилу (время жизни, активация на нажатие кнопки и др.)). Затем для каждого скила - свой скрипт, отнаследованный от базового. SkillController хранит все скилы под уникальными ID (скажем, в dictionary(ID, SkillBase)). В качестве ID можно взять enum.
Нет не так. При вызове конструктора, сначала вызываем конструктор базового Skill, куда отправляем все общие данные, а специфические для этого скилла заполняем внутри конструктора