Произвольные методы типа Update

Программирование на Юнити.

Произвольные методы типа Update

Сообщение vave 18 мар 2017, 05:14

Всем привет. столкнулся с проблемой при написании логики для мобов.. всю логику приходится пихать в Update и каждый кадр идет проверка кучи условий (на данный момент больше 7)....
если мобов больше 15-20 - начинаются дикие тормоза... отсюда вопрос - можно ли сделать несколько методов типа Update, например UpdateIfSearchEnemy, UpdateIfAgro, UpdateIfInCombat...
чтобы при вхождении в кадр - выполнялся только нужный Update пока не измениться условие... нет врага - каждый кадр запускаем UpdateIfSearchEnemy и если в этом апдейте нашли врага, в следующем кадре запутстим UpdateIfAgro и бежим к врагу пока не приблизимся на дистанцию атаки, если в бою то UpdateIfInCombat и он выполняется всегда пока враг жив...
иными словами не пихать все проверки в Update а разбить в зависимости от состояния
vave
UNец
 
Сообщения: 17
Зарегистрирован: 13 мар 2017, 06:00

Re: Произвольные методы типа Update

Сообщение DbIMok 18 мар 2017, 07:09

Все можно, но ваша проблема не в этом. Используйте Profiler чтобы узнать причину.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Произвольные методы типа Update

Сообщение Xtir 18 мар 2017, 12:11

можно сделать enum состояний, например как-то так

Синтаксис:
Используется csharp
void Update()
{
        switch(status)
        {
        case Status.searchTarget:
                //писк цели
                if(цель найдена)
                {
                        status = Status.goToTarget;
                }
                break;
        case Status.goToTarget:
                //идем к цели
                if(дистанция до цели < дистанция атаки)
                {
                        status = Status.attackTarget;
                }
                break;
        case Status.attackTarget:
                //атакуем цель
                break;
        }
}
 


как-то так, не знаю так вообще делается, или это считается не правильный метод?
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Произвольные методы типа Update

Сообщение Tolking 18 мар 2017, 15:13

Если работает, то все верно...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2715
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Произвольные методы типа Update

Сообщение Левш@ 19 мар 2017, 20:17

vave писал(а):всю логику приходится пихать в Update и каждый кадр идет проверка кучи условий (на данный момент больше 7)....
если мобов больше 15-20 - начинаются дикие тормоза..

Сильно сомневаюсь что ваши тормоза вызывают иф-ы...
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11