C# 在重新加载场景之前要播放的死亡声音
我有一个场景,这是一个无限级的游戏 当播放机死机时,发生碰撞,声音无法全部播放,因为它重新加载得太快:C# 在重新加载场景之前要播放的死亡声音,c#,unity3d,C#,Unity3d,我有一个场景,这是一个无限级的游戏 当播放机死机时,发生碰撞,声音无法全部播放,因为它重新加载得太快: private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag != currentColor && collision.tag != "Score") { playerDeath(); } } private void playerDeath() { S
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag != currentColor && collision.tag != "Score")
{
playerDeath();
}
}
private void playerDeath()
{
SoundManagerScript.PlaySound("Error");
score = 0;
// SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
SceneManager.LoadScene("Infinity Level");
}
我不明白我要做什么来修复这个错误
编辑:
声音为1秒长您可以将playerDeath功能更改为courutine并进行如下延迟
private IEnumerator playerDeath()
{
SoundManagerScript.PlaySound("Error");
yield return new WaitWhile (()=> SoundManagerScript.source.isPlaying)
score = 0;
// SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
SceneManager.LoadScene("Infinity Level");
}
您可以保持audiosource gameobject处于活动状态,在使用方法加载场景时不要破坏它,同时不确定这是否解决了问题,但将声音移动到碰撞检测中会起作用吗?可能不是 另一个解决方案可能是在死亡后使用“再次播放”功能,这将延迟场景更改,直到用户交互,这可能会给足够的时间播放声音。根据游戏的想法,这种互动可能会在以后变成“在[最新检查点][主页][关卡开始][游戏开始]重生”。。。或者你能想到的其他东西
最后,您可以将SceneManager.LoadScene设置为1秒的延时。如果在这段时间内没有其他事情发生,用户除了在屏幕上诅咒死亡之外,什么都做不了,那么这可能会给声音播放时间。我如何才能添加SceneManager.LoadScene延迟1秒?这不起作用=/球永远不会死,是的,我正在使用StartRoutinePlayerDeath;嗯,然后你可以让它只是等待你想要多少收益返回新的WaitForSeconds5f;或者返回新的WaitForSecondRealTime5f,它不依赖于时间刻度