我有一个字符选择屏幕,该屏幕显示确认屏幕,选择屏幕时,启动协程,一连串粒子飞入屏幕并加载新的关卡-这是为了延迟关卡的加载,以便粒子可以填满屏幕。
当我通过直接将场景(字符选择)加载到Unity编辑器中进行测试时,所有这些都按预期工作,但是,如果我正在执行完整的测试并且来自(开始屏幕),则可以执行所有操作,并且debug表示正在注册所有内容,但是粒子不显示,并且加载不执行。
此外,控制台不会显示任何错误。
我已经尝试了所有方法(停止使用协程,使用while(true)
...),但无法弄清楚为什么它不加载。下面的代码:
UI按钮具有LoadEloise()
作为单击时触发的方法。
以下代码:
试图在激活协程之前立即将其停止运行,并且还要在启动时停止该协程,并确保在再次激活之前将粒子系统设置为Active(false)。
IEnumerator DelayLoad()
{
heartExplosion[explosionNumber].gameObject.SetActive(true);
yield return new WaitForSeconds(1);
SceneManager.LoadScene(sceneName);
}
public void LoadEloise()
{
sceneName = "Eloise";
explosionNumber = 10;
StartCoroutine(DelayLoad());
}
预期结果:激活粒子系统,覆盖屏幕,然后在加载一秒钟的新场景之后。
这是一个展示预期结果的视频,方法是从托管协程的场景开始进行测试:https://www.youtube.com/watch?v=BQAgzJ-HJB4&feature=youtu.be
实际结果:没有,没有错误,没有粒子也没有。从图形的角度来看,该按钮显示为按下状态,但是什么也没有发生。
这是一个视频,显示了从上一场景启动代码时发生的情况:https://www.youtube.com/watch?v=WhEzi9Qjvg8&feature=youtu.be
答案 0 :(得分:0)
您的LoadEloise函数是否被调用了?
如果只是不显示粒子的问题,则可能是由于未为粒子系统/容器正确设置画布排序顺序而导致的,但是如果随后的场景加载也没有发生,您需要先检查两件事: