игрок не выполнит определенное действие. Если я воспользуюсь while(true), то у меня вся игра повиснет?
Корутины использовать не хочу, потому что стараюсь держать логику и визуал отдельно.
Хмм, а если через событие?
Я так понимаю ты эту функцию вызываешь в апдейте?
У меня оно сейчас реализовано через объект SpellController, который в апдейте проверяет, выбрана ли цель, и если выбрана, вызывает следующий метод. По сути, то же самое что через ивент, так?
А зачем тебе while(true) в апдейте если апдейт это и есть while(true) loop?
Этот метод я не в апдейте вызываю. Я его вообще не вызывал пока что, но по идее он вызывается один раз при касте спела.
Вопрос то в чем? Не совсем понимаю
Вопрос в том, что я хочу переделать эту тему — отвязать логику от визуала максимально. Придумал вот способ с while(true), по идее если я вызову этот метод, он не будет отпускать тред пока не выполнится условие. Или это не так работает?
По поводу отпускает ли тред я не знаю. По поводу переписать логику, то расскажи как сейчас у тебя и как ты переделал, может мы сможем подсказать более грамотный вариант
Сейчас у меня после того как отдана команда на каст спела создается объект SpellController, в апдейте которого проверяется, выбрал ли игрок цель. Если выбрал, то объект кастует спелл, после чего самоуничтожается.
Переписать у меня еще не получилось, так что рассказывать нечего)
А почему сразу не проверять выбрана ли цель и если выбрана, то можно кастовать спел?
Потому что она сразу не выбрана. Её можно выбирать только после начала каста.
Могу показать через демонстрацию экрана в дискорде или тг
Ну пусть у тебя будет класс в котором в апдейте будешб проверять выбрана ли цель Если хочешь можно вообще сделать один апдейт на всю систему Зачем создавать то новый объект каждый раз
Да, наверное так и сделаю. Спасибо.
В смысле, в апдейте буду держать логику. Или в корутине.
Я думаю у тебя много где функционал зависит на выборе таргета, поэтому если хочешь ещё импрувнуть производительность, то можно при выборе скила запускать корутину которая чекает выбрана ли цель, чтобы в апдейте не делать
Хочешь легко? Делай апдейт Посложнее - корутина
Тебе нужно сделать это не блокировав поток, корутины делают это
можно тогда через async await сделать (только запускать через Task.Run а как обычный метод вызвать)
Хмм, я точно не могу сказать ведь как каст идёт я не знаю, но по идее можно чуть по другому сделать, можно китать рейкаст в сторону противника, и если он попал в него то начать каст, ну и за одно проверка на кнопку сделать.
Їкорунтину юзай
И ты изобрела корутины
ничего что юнитеки сами предлагают этот подход вместо корутин?
Можно ссылку?
https://www.google.com
ворвусь :)) справедливости ради, там чел, что задал вопрос, в целом не очень понимает, что происходит) Кидать его в асинки, возможно, слишком жестоко) Ну и асинки и корутины это в принципе разные вещи
да, я потом уже прочла что он не понимает, когда отвечала видела только его сообщение
Обсуждают сегодня