Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 离开场景时如何进行淡入淡出过渡_C#_Unity3d - Fatal编程技术网

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

C# 离开场景时如何进行淡入淡出过渡,c#,unity3d,C#,Unity3d,在我的游戏中,我有LevelManager和LevelManager.cs,它不是singleton。 我想在场景之间进行渐变。我为Fade\u In和Fade\u Out制作了动画。首先,它可以正常工作,但当我想离开场景时,它(淡出)不起作用 一些LevelManager.cs: private void Start() { if (autoLoadNextLevelAfter != 0) { Invoke("FadeOut", autoLoadNextLevelAft

在我的游戏中,我有
LevelManager
LevelManager.cs
,它不是
singleton
。 我想在场景之间进行渐变。我为
Fade\u In
Fade\u 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\u Out
结束时,我调用
LoadNextLevel
方法。在这种情况下,
Fade\u 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无法启动,因为游戏对象“LevelManager”处于非活动状态。我想这是因为
LevelManager
不是一个
singleton

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

我最近读到有关此错误的消息,这是因为我使用了
LevelManager
的预置。当然,我的目标是活跃的,哈哈。我想做一个
LevelManager
singleton
,但我不知道如何在我的项目中实现它。