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
,但我不知道如何在我的项目中实现它。