Я пишу видео-игру, используя C# (и движок Unity). Это игра с большим количеством пушек, и вот как я планирую ее архитектовать ...Новое на C# от JS/Python ... Как сделать Duck Typing в C#?
У меня есть базовый класс Gun. Это обрабатывает все обычные вещи, например, сколько выстрелов в секунду можно стрелять, сколько у вас боеприпасов и т. Д.
Тогда у меня есть куча одноразовых классов оружия, которые наследуются от этого базового класса. Пулемет может выстрелить несколько выстрелов, а затем задержать, так что это подкласс. Огнеупорщик может поджечь землю, так что это подкласс ... и т. Д.
Затем, на другой стороне моей кодовой базы, у меня есть контроллер джойстика.
Мой план состоял в том, чтобы передать экземпляр пистолета на контроллер джойстика. Джойстик говорит: «Эй, пистолет, стреляй так». Пистолет заботится обо всем остальном.
Проблема в том, что C# строго типизирован. Итак, что мне делать? Мои пушки отличаются друг от друга, что они разные классы, поэтому я не могу сказать своему джойстику, для чего пишут память.
Что мне здесь не хватает? В JS или Python я просто передал пистолет, и языку было бы все равно, что этот тип является подклассом, потому что у него все еще есть метод «огонь» ... Мысли?
Спасибо!
C# не имеет утиную печать. Вы можете использовать наследование и полиморфизм. Создайте надбавку asbtract для всех орудий и используйте это. –
Для Unity я рекомендую использовать для этого интерфейс. – Serlite