Unity3d. Как организовать систему скиллов?

Всем привет, помогите решить задачу. У меня есть несколько классов:
1. BaseCharacter - тут мы описываем общую информацию о имени игрока его заслугах и тд.
2. SkillController - тут идет получение всех возможных для него скилов, т.е. те которые он может использовать.

Собственно, как мне правильно организовать систему скилов, для персонажа, чтобы можно было использовать скил на определенную кнопку, получить его кд для гуи, т.е. к примеру в SkillController передать только названия или id скилов.
Сейчас я просто BaseCharacter добавляю компонент контроллера скилов, а в нем, нужные скилы. Как это сделать правильно?

Возможно есть вариант гораздо проще, но в скилах мне надо получать позицию персонажа, а так же использовать update для некоторых скилов.
  • Вопрос задан
  • 4788 просмотров
Решения вопроса 1
ping_rulezzz
@ping_rulezzz
Вопрос некорректный - вы чуть ли не просите спроектировать всю систему.

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

Войдите, чтобы написать ответ

Похожие вопросы