в себе поля и методы отвечающие за хранение и обработку хп, брони, получения дамага и тп. Представим что я для нового типа врага хочу написать другую логику для класса со статами (будут новые методы и поля). Каким образом можно реализовать замену поля типа EntityStats на какой-то BossStats, при этом имея возможность редактировать поля нового класса в эдиторе?
да если сделать через интерфейс и его селектор в эдиторе
https://pastebin.com/PT5va5CK это в скрипты а это в папку Editor https://pastebin.com/SsH2QYnK
Правильно ли я понимаю, что 1-й скрипт работает как атрибут по типу [Header()], а 2-й скрипт отображает поля объекта к которому относиться атрибут?
да первое - аттрибут, второе - дровер для атрибута использование в обычном скрипте выглядит так [SelectImplementation(typeof(IInterface))] [SerializeReference] private IInterface field;
Просто вот в чём прикол: Есть EntityBehaviour (отвечает за основное поведение объекта движение, атака и тп) с полем EntityStats. Далее BossBehaviour (унаследован от EntityBehaviour) с новым полем BossStats, но поле EntityStats остаётся из-за наследования. Хотелось бы либо как-то выпилить старое поле, либо заменить на новое.
сделай базовый интерфейс (IBehaviour) для этого поведения и отнаследуй от него EntityBehaviour, BossBehaviour и так далее и в эдиторе сможешь выбирать необходимую реализацию
и стейты тоже так можешь так сделать либо просто в реализации уже укажи поле с доступными стейтами
у тебя выбор реализации будет через выпадающий список просто) и не нужно будет делать кучи SO и наследников. я такой механизм реализовывала
Окей, спасибо большое, попробую))) Потому что такого функционала очень не хватает, приходилось как-то выходить из положения костылями
Боже, дай этому человеку крепкое здоровье, скрипты работают более чем отлично
Обсуждают сегодня