Как продолжить выполнение скрипта после корутины

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

Как продолжить выполнение скрипта после корутины

Сообщение DarkDeivel 25 сен 2017, 17:11

Всем привет! Не знал как оформить название темы что бы туда все влезло... Во время выполнения определенного войда(к примеру снятие предмета) у меня идет обращение к другому компоненту и там вызывается корутина. Можно ли как-то сделать что бы войд не продолжал выполнять остаток кода пока не выполнится корутина в другом компоненте и не даст определенный сигнал(ответ) в зависимости от которого будет решение продолжать выполнять этот войд или нет...? Ох надеюсь правильно объяснил.


Начало основного войда:
Синтаксис:
Используется csharp

public GameObject otherObject;

public void UnEquipItem(){

otherObject.GetComponent<SomeScript>().UnEquip()
//Если получаем ответ положительный тогда продолжаем выполнение войда
//someCode1
//someCode2
...
}
 


Другой компонент:

Синтаксис:
Используется csharp
public void UnEquip(){
StartCoroutine(testCoroutine());
}

IEnumerator testCoroutine(){
someCode...
}
 


Я так понимаю есть всякие типа return и прочие приблуды которые могут мне в этом помочь, но точно не разбираюсь, спасибо!
DarkDeivel
UNITрон
 
Сообщения: 251
Зарегистрирован: 03 окт 2011, 14:02

Re: Как продолжить выполнение скрипта после корутины

Сообщение NOVA 25 сен 2017, 17:59

Я bool переменной делал. В корутине присваивал значение true и проверял в апдейте. Коряво выглядит, нормально работает.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как продолжить выполнение скрипта после корутины

Сообщение samana 25 сен 2017, 21:08

Ещё можно попробовать просто разбить на методы.
(1) метод основного скрипта, который запустит в конце корутину другого скрипта.
(2) метод основного скрипта, в котором будет то, что у вас должно произойти после корутины другого скрипта.

Работает как-то так:
Основной метод (1) что-то проверяет и обращаясь к другому компоненту запускает в нём корутину и основной метод завершается. В эту корутину можно передать ссылку на основной компонент, чтобы по завершению корутины, в зависимости от ваших условий, теперь она сама могла бы запустить метод (2) из основного класса.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Как продолжить выполнение скрипта после корутины

Сообщение DarkDeivel 26 сен 2017, 07:34

samana писал(а):Ещё можно попробовать просто разбить на методы.
(1) метод основного скрипта, который запустит в конце корутину другого скрипта.
(2) метод основного скрипта, в котором будет то, что у вас должно произойти после корутины другого скрипта.

Работает как-то так:
Основной метод (1) что-то проверяет и обращаясь к другому компоненту запускает в нём корутину и основной метод завершается. В эту корутину можно передать ссылку на основной компонент, чтобы по завершению корутины, в зависимости от ваших условий, теперь она сама могла бы запустить метод (2) из основного класса.


Спасибо всем! Такой вариант вполне может подойти.
DarkDeivel
UNITрон
 
Сообщения: 251
Зарегистрирован: 03 окт 2011, 14:02


Вернуться в Почемучка

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

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