📜  unity 停止所有音频 - C# (1)

📅  最后修改于: 2023-12-03 15:05:45.003000             🧑  作者: Mango

Unity 停止所有音频 - C#

有时在游戏中需要停止所有的音频的播放,这时我们可以使用 Unity 内置的 AudioListener.pause 方法来实现。在本文中,我们将介绍如何在 C# 中使用 AudioListener.pause 来停止所有音频的播放。

步骤
  1. 首先,我们需要得到当前场景中的所有 AudioSource 组件。

    AudioSource[] audioSources = FindObjectsOfType<AudioSource>();
    

    该方法使用 FindObjectsOfType 方法来获取当前场景中的所有 AudioSource 组件。

  2. 接着,我们可以使用 foreach 循环来停止所有的音频播放。

    foreach (AudioSource audioSource in audioSources)
    {
        audioSource.Stop();
    }
    

    该代码使用 Stop() 方法来停止每一个 AudioSource 的播放。

  3. 最后,我们可以使用 AudioListener.pause 方法来停止所有的音频播放。

    AudioListener.pause = true;
    

    该方法会停止所有 AudioSource 组件的播放,并清空所有音频缓存。

完整代码
using UnityEngine;

public class StopAllAudio : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            AudioSource[] audioSources = FindObjectsOfType<AudioSource>();

            foreach (AudioSource audioSource in audioSources)
            {
                audioSource.Stop();
            }

            AudioListener.pause = true;
        }
    }
}

该代码会在用户按下空格键时停止所有的音频播放。

结论

使用以上方法,我们可以非常方便的停止所有的音频播放。在实际应用中,我们可能需要使用不同的触发条件来触发音频的停止,例如游戏暂停、场景切换等。同时,我们也可以结合 AudioListener.pause 方法来清空所有音频缓存,以优化游戏性能。