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

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

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

28 ответов

27 просмотров

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

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

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
ворвусь :)) справедливости ради, там чел, что зада...

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

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

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

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
)) может, нужно поправить? )) 2. Ребята, нам нужно, чтобы сообщения из Инстаграм приходили в ОДУ. Какое приложение посоветуете?
Alexander Sharoiko MSE / Александр Шаройко
1
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Всем привет! Взялся портировать модули на 18 версию, лезет _logger.log(log_level, 'no translation language detected, skipping translation %s', frame, stack_info=True) А чт...
Max Lit
3
И? Все равно глазами проверять надо каждое поле
Andrii Kurdiumov
4
Карта сайта