离开场景时如何进行淡入淡出过渡

时间:2018-05-28 11:41:12

标签: c# unity3d

在我的游戏中,我有LevelManagerLevelManager.cs而且它不是singleton。 我想在场景之间进行淡入淡出过渡。我为Fade_InFade_Out制作了动画。首先它工作得很好但是当我想离开一个场景时,它(Fade_Out)不起作用。

部分LevelManager.cs

private void Start() {
    if (autoLoadNextLevelAfter != 0) {
        Invoke("FadeOut", autoLoadNextLevelAfter);
    }
}

public void LoadLevel(string name) {
    SceneManager.LoadScene(name);
}

public void LoadNextLevel() {
    SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}

private void FadeOut() {
    animator.SetTrigger("FadeOut");
}

Start方法中,我调用Invoke动画,在Fade_Out结束时,我调用LoadNextLevel方法。在这种情况下,Fade_Out工作正常。 但是,如果我想用LoadLevel进行转换(当我按下按钮时它会调用)它会中断。我试图制作IEnumerator LoadLevel

public void NewLoadLevel(string name) {
    FadeOut();
    StartCoroutine(CoroutLoadLevel(name));
}

private IEnumerator CoroutLoadLevel(string name) {
    yield return new WaitForSeconds(1f);

    SceneManager.LoadScene(name);
}

控制台说:Coroutine couldn't be started because the the game object 'LevelManager' is inactive!。我猜是因为LevelManager不是singleton

1 个答案:

答案 0 :(得分:0)

确保LevelManager处于活动状态并已启用。协程需要一个活动对象才能运行(因为如果它不是活动的,则不会调用更新逻辑)。