Unity3d-Finite-State-Machine icon indicating copy to clipboard operation
Unity3d-Finite-State-Machine copied to clipboard

StartCoroutine with LoadSceneAsync in _Enter states loading instantly

Open st4rdog opened this issue 6 years ago • 0 comments

For some reason, this code will load the level instantly on _Enter, instead of waiting until the MainMenu_Enter.

private AsyncOperation load = new AsyncOperation();

void Intro_Enter()
{
    // Preload Level
    StartCoroutine(PreLoadLevel());
}

void Intro_Update()
{
    _introTimer += Time.deltaTime;

    if (_introTimer > _introLength)
        _fsm.ChangeState(States.MainMenu);
}

void MainMenu_Enter()
{
    // Show preloaded level
    load.allowSceneActivation = true;
}

IEnumerator PreLoadLevel()
{
    load = SceneManager.LoadSceneAsync("scene", LoadSceneMode.Additive);
    load.allowSceneActivation = false;
    yield return null;
}

Moving the StartCoroutine out into the Start function will work as expected...

st4rdog avatar Dec 14 '18 17:12 st4rdog