Всем привет, сейчас думаю как сделать систему простых баффов/дебаффов. Пока

у меня есть базовый класс Buff, а от него уже идут остальные. Когда накладывается бафф, на объект через AddComponent вешается нужный скрипт(Если уже есть. то просто return) и выполняет какие-то действия. Насколько это выгодное решение, если баффов и дебафов в сумме не будет и 20 наверное?

9 ответов

26 просмотров

привет) как я думаю... бафы ведь всегда одинаковые? можно их нацепить как нибдудь на 1 объект как компоненты и ссылки на них добавлять в определённого персонажа условно. наверное я бы сделал как то так, если не задумываться, а так может это уж сильно смахивает на синглтон... это может быть спорное решение

я бы сделал что-то вроде class CharacterParameters { private List<IBuff>() _buffs = new(); public float ParameterBase1; public float ParameterBaseN; public float ParameterModified1 {get; private set; } public float ParameterModifiedN { get; private set; } publlic void AddBuff(IBuff buff) { _buffs.Add(buff); CalcBuffs(); } private void CalcBuffs() { float v = ParameterBase1; foreach (IBuff buff in _buffs) { v = buff.ModifyParameter1(v); } ParameterModified1 = v; // ... ParameterodifiedN } } interface IBuff { float ModifyParameter1(float value); float ModifyParameterN(float value); } class BuffParameter1Double : IBuff { float ModifyParameter1(float value) => value*2; float ModifyParameterN(float value) => value; } далее там исходя из специфики того что и как баффы меняют можно что-то заоптимизировать (и механизм убирания баффов прикрутить)

Danya-ili Kak? Автор вопроса
Константин ARORA
я бы сделал что-то вроде class CharacterParameters...

Спасибо за демонстративный код, хорошая пища для размышления😋

Только я бы сами бафы не через интерфейс ,а создал бы родительский компонет Spel и уже от него через scribtabel object наделал разных бафов/дебафов, и удобноей и вроде как проще

Нікіта Мостовий
Только я бы сами бафы не через интерфейс ,а создал...

зачем? если можно это сделать просто класс и его накладывать без монобеха или без со?

Arcueid Elizabeth D'athemon
зачем? если можно это сделать просто класс и его н...

И вам доброе утро.Можно,но у него как я понял будут несколько разных бафов/дебафов, со своим поведением,но с одинаковым набором функций(я не говорю что интерфейс в этом случае нельзя юзать,а то что по логике, легче создать конструктор спелов через СО,и там уже вертеть ими как угодно,добавлять убирать и они не будут на прямую зависить от персонажа

Нікіта Мостовий
И вам доброе утро.Можно,но у него как я понял буду...

просто зачем СО если так же все можно описать в обычном классе. да если он хочет несколько вариаций одного спела легче будет хто сделать с СО

Arcueid Elizabeth D'athemon
просто зачем СО если так же все можно описать в об...

Согласен😂,ну просто как я понимаю ему нужно несколько спелов,ну я в принципи думаю что там будет меняться только набор параметров (ну если это баф то это количество маны для юзания,время отката,партикл, и ефект(там плюс минус к тому или тому)).

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

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта