У меня есть интерфейс IAtack, который имеет метод Atack().
Его реализуют несколько классов MeleeAtack и RangeAtack. Которые реализуют логику атаки для ближних юнитов и дальних соответственно.
Так же MeleeAtack и RangeAtack наследуются от MonoBehaviour.
Суть в том что при такой архитектуре я могу кидать один из компонентов Melee или Range и в скрипте контроллера
IAtack atack = GetComponent();
И вот таким образом получать атаку, в зависимости от компонента накинутого на объект.
Таким образом я не переплетаю не нужную логику в одном общем классе и смогу общие методы при нужде вынести в абстрактный.
Но чует моё сердце, что этот подход, какой-то немного странный(скорее всего, потому-что я нигде не видел подобного). Может подскажете, как лучше организовать подобный код.
Нормальный подход, так много где делают, просто мало кода видели, вот и кажется странным. Более того, его используют не только для атакующих, но и атакуемых, например, делают интерефейс IDamageable и при нанесении урона работают с ним, а логика нанесения повреждений скрывается в конкретном классе.
P. S. Attack пишется с двумя t.
Здравствуйте, можете, пожалуйста, посоветовать какую-то литературу или ссылку, где можно почитать про то, как надо правильно делать архитектуру кода, работая с Unity?
Nikitos_STR, Архитектура существует сама по себе, Юнити это просто контекст применения. Я бы порекомендовал почитать про шаблоны проектирования в целом и попробовал применить их на практике в мини-проекте на день-два. Ещё полезно читать чужой код для развития кругозора, накачайте в Asset Store плагинов с хорошими оценками и посмотрите как они сделаны. Из хороших источников информации могу посоветовать этот и этот. Но могу точно сказать, что прочтение само по себе мало что даёт, пока сам раз пять одно и то же не напишешь - не разберёшься.