Всем привет. Начал работать с одним проектом. Создал корутины. Они берут значения с сервера и записывают их в параметры объекта. В чем проблема: мне нужно вызывать их для нескольких объектов, и когда я прописываю их по очереди, происходит так, что одна корутина не успела взять значения с сервера, а вторая уже вызвалась, либо наоборот. Могу ли я сделать так, чтобы корутины вызывались только после того, как завершится предыдущая.
У кого какие варианты? Мне достаточно теории. Код не обязательно. Заранее спасибо.
Конструкция yield return внутри тела IEnumerator является эдакой точкой передачи управления.
Грубо говоря если вы делаете yield return new WaitForSecond(2) - корутина передаёт управление внутрь этого класса и ждёт пока он не закончит свою работу, после чего возвращается и продолжает работу дальше.
Аналогичным образом можно передавать управление и другим корутинам
private void Start()
{
StartCoroutine(FirstRoutine());
}
IEnumerator FirstRoutine()
{
yield return null;
print("Пропущен кадр");
yield return new WaitForSeconds(1);
print("Прошла секунда");
yield return StartCoroutine(SecondRoutine());
print("Прошло две секунды");
}
IEnumerator SecondRoutine()
{
yield return new WaitForSeconds(2);
}
В вашем случае будет одна корутина, например, LoadRoutine()
, которая последовательно передаёт управление в другие корутины, которые получают и применяют необходимые данные.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
На вход поступает строка вида : "\\t", которая экранируется как "\t"
Есть классПредположим, что у него есть определенные свойства, методы, события
Для WPF приложения нужно в фоновом режиме проверять, загружать и устанавливать обновленияРешил прибегнуть к службам, но хочу реализовать...
Всем приветМожно сказать я ещё маслёнок, но базовые понятия и костыли пишу