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,它不依赖于时间刻度