Я правильно понял, что у тебя есть множество разных заклинаний, но скрипт, из которого ты пытаешься заклинание "скастить" не может знать, к какому классу оно относится?
Создай класс Spell с методом CastSpell. От Spell наследуй уже, допустим, Fireball и остальные, переопределяй в них метод. Потом ты можешь использовать GetComponent < Spell>() даже если это Fireball. Происходит Downcast, если я не ошибаюсь. Это ООП.
Либо можно попробовать решить с помощью ивентов. Думаю, я бы попробовал так, если активное заклинание постоянно меняется.