Привет! Мне тут нужно заморозить одну функцию до момента, пока

игрок не выполнит определенное действие. Если я воспользуюсь while(true), то у меня вся игра повиснет?

Корутины использовать не хочу, потому что стараюсь держать логику и визуал отдельно.

28 ответов

31 просмотр

Хмм, а если через событие?

Я так понимаю ты эту функцию вызываешь в апдейте?

Nicolas-Cognito Автор вопроса
Daniil Kri
Хмм, а если через событие?

У меня оно сейчас реализовано через объект SpellController, который в апдейте проверяет, выбрана ли цель, и если выбрана, вызывает следующий метод. По сути, то же самое что через ивент, так?

Nicolas Cognito
У меня оно сейчас реализовано через объект SpellCo...

А зачем тебе while(true) в апдейте если апдейт это и есть while(true) loop?

Nicolas-Cognito Автор вопроса
Roman Salnikov
А зачем тебе while(true) в апдейте если апдейт это...

Этот метод я не в апдейте вызываю. Я его вообще не вызывал пока что, но по идее он вызывается один раз при касте спела.

Nicolas-Cognito Автор вопроса
Roman Salnikov
Вопрос то в чем? Не совсем понимаю

Вопрос в том, что я хочу переделать эту тему — отвязать логику от визуала максимально. Придумал вот способ с while(true), по идее если я вызову этот метод, он не будет отпускать тред пока не выполнится условие. Или это не так работает?

По поводу отпускает ли тред я не знаю. По поводу переписать логику, то расскажи как сейчас у тебя и как ты переделал, может мы сможем подсказать более грамотный вариант

Nicolas-Cognito Автор вопроса
Roman Salnikov
По поводу отпускает ли тред я не знаю. По поводу...

Сейчас у меня после того как отдана команда на каст спела создается объект SpellController, в апдейте которого проверяется, выбрал ли игрок цель. Если выбрал, то объект кастует спелл, после чего самоуничтожается.

Nicolas-Cognito Автор вопроса
Roman Salnikov
По поводу отпускает ли тред я не знаю. По поводу...

Переписать у меня еще не получилось, так что рассказывать нечего)

Nicolas Cognito
Сейчас у меня после того как отдана команда на кас...

А почему сразу не проверять выбрана ли цель и если выбрана, то можно кастовать спел?

Nicolas-Cognito Автор вопроса
Roman Salnikov
А почему сразу не проверять выбрана ли цель и если...

Потому что она сразу не выбрана. Её можно выбирать только после начала каста.

Nicolas-Cognito Автор вопроса
Roman Salnikov
А почему сразу не проверять выбрана ли цель и если...

Могу показать через демонстрацию экрана в дискорде или тг

Nicolas Cognito
Потому что она сразу не выбрана. Её можно выбирать...

Ну пусть у тебя будет класс в котором в апдейте будешб проверять выбрана ли цель Если хочешь можно вообще сделать один апдейт на всю систему Зачем создавать то новый объект каждый раз

Nicolas-Cognito Автор вопроса
Nicolas-Cognito Автор вопроса
Roman Salnikov
Ну пусть у тебя будет класс в котором в апдейте бу...

В смысле, в апдейте буду держать логику. Или в корутине.

Nicolas Cognito
Да, наверное так и сделаю. Спасибо.

Я думаю у тебя много где функционал зависит на выборе таргета, поэтому если хочешь ещё импрувнуть производительность, то можно при выборе скила запускать корутину которая чекает выбрана ли цель, чтобы в апдейте не делать

Nicolas Cognito
В смысле, в апдейте буду держать логику. Или в кор...

Хочешь легко? Делай апдейт Посложнее - корутина

Тебе нужно сделать это не блокировав поток, корутины делают это

можно тогда через async await сделать (только запускать через Task.Run а как обычный метод вызвать)

Nicolas Cognito
Этот метод я не в апдейте вызываю. Я его вообще не...

Хмм, я точно не могу сказать ведь как каст идёт я не знаю, но по идее можно чуть по другому сделать, можно китать рейкаст в сторону противника, и если он попал в него то начать каст, ну и за одно проверка на кнопку сделать.

Їкорунтину юзай

И ты изобрела корутины

Phantom
И ты изобрела корутины

ничего что юнитеки сами предлагают этот подход вместо корутин?

Можно ссылку?

ворвусь :)) справедливости ради, там чел, что задал вопрос, в целом не очень понимает, что происходит) Кидать его в асинки, возможно, слишком жестоко) Ну и асинки и корутины это в принципе разные вещи

Artem Jim
ворвусь :)) справедливости ради, там чел, что зада...

да, я потом уже прочла что он не понимает, когда отвечала видела только его сообщение

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
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
Карта сайта