在我的游戏中,我有LevelManager
和LevelManager.cs
而且它不是singleton
。
我想在场景之间进行淡入淡出过渡。我为Fade_In
和Fade_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
。
答案 0 :(得分:0)
确保LevelManager处于活动状态并已启用。协程需要一个活动对象才能运行(因为如果它不是活动的,则不会调用更新逻辑)。