Unity 6.3
0 онлайн 85 гостей 3 в системе
Вход

AsyncOperation.completed

Параметры

Параметр Описание
значение Завершенные AsyncOperation. Это может быть полезно, если вы хотите использовать одну и ту же функцию обработчика событий с несколькими различными операциями.

Описание

Поднимается после завершения операции AsyncOperation.

Это событие предлагает альтернативу отказу от операции в короутине или проверке, что AsyncOperation.isDone Это самый эффективный вариант, когда вам не нужно регулярно выполнять код, зависящий от состояния операции, — например, если вы не собираетесь обновлять индикатор прогресса сведениями об операции AsyncOperation.progress.

Событие запускается в том же месте в кадре, что и при выполнении сопутствующих процедур, сразу после MonoBehaviour.Update методы были запущены.

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

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

using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadNextAreaTrigger : MonoBehaviour { public string nextAreaSceneName; public Animator door;

public void OnTriggerEnter(Collider other) { if (!enabled || other.tag != "Player") return;

var loadOp = SceneManager.LoadSceneAsync(nextAreaSceneName, LoadSceneMode.Additive); loadOp.completed += AreaFinishedLoading;

// Disable this component so the trigger does not fire a second time enabled = false; }

private void AreaFinishedLoading(AsyncOperation op) { door.SetTrigger("UnlockAndOpen"); } }