同时播放多个声音

更新页 :
页面创建日期 :

验证环境

窗户
  • 视窗 11
统一编辑器
  • 2021.3.3f1
输入系统包
  • 1.3.0

此提示的先决条件

作为此提示描述的前提,已预先进行了以下设置。

关于样品中包含的材料

音效是从以下网站借来的。

关于音频文件

可以使用 Unity 的标准功能播放以下音频文件格式: 请提前准备,因为它将在这些提示中使用。

  • 波浪 (.wav)
  • 奥格沃比斯 (.ogg)
  • MPEG 第 3 层 (.mp3)

有关更多信息,请参阅官方 Unity 文档。

关于多个同时播放音频

在前面的提示中,我们使用AudioSource播放音频文件,但是当我们尝试发出单个声音和多个声音时,之前的声音消失了。 例如,如果游戏中有两个爆炸,当第二个爆炸产生声音效果时,第一个声音效果消失是不自然的。 本节介绍如何在彼此之上多次播放相同的声音。

同时播放音频的步骤

在这里,我将从我创建新项目的角度进行解释,但是如果您在一定程度上了解Unity,则可以仅剪切相关部分并记住它们。

这一次,每次单击按钮时都会播放音效。 创建 UI,如下所示。 细节是适当和好的。

通过将声音文件拖放到项目中来添加声音文件。

将音频源添加到层次结构。 在这种情况下,您不会将音频剪辑直接设置为音频源。

添加脚本。 ButtonEvent 将名称保留为 。

脚本如下所示:

using UnityEngine;

public class ButtonEvent : MonoBehaviour
{
  [SerializeField] private AudioSource AudioSource;

  /// <summary>音声データ。</summary>
  [SerializeField] private AudioClip AudioClip;

  public void OnClickPlay()
  {
    // オーディオを再生します
    AudioSource.PlayOneShot(AudioClip);
  }
}

AudioSource 将其视为用于控制音频的类,就像前面的提示一样。

AudioClip 是存储音频数据的类。 您可以在此处设置音频文件。

AudioSource.PlayOneShot 如果将其作为参数传递给该方法,则可以播放 AudioClip 音频数据。 通过此方法播放的音频是独立控制的。 如果再次调用此方法,它将作为与前一个声音分开的新语音播放。 因此,每次调用此方法时都可以再次播放声音。

将脚本附加到事件系统。

对于“音频源”,设置添加到层次结构的“音频源”。

对于“音频剪辑”,请从项目中设置音频文件。

最后,将该方法设置为按钮的单击事件。

运行游戏并单击按钮。 我认为音效会播放。 此外,如果您在播放过程中再次单击该按钮,将播放新声音而不会消失之前的声音。

AudioClip这样,现在可以通过 . 这使得游戏可以在不自然地消失之前的声音的情况下进行游戏。

使用音频剪辑播放时的缺点

AudioClip 我能够通过使用 播放音频来相互播放音频,但相反,会出现以下缺点。

声音变得嘈杂

如您所见,如果您连续单击该按钮,声音会重叠,播放的谐波会变得越来越响亮。 例如,如果您想在游戏中攻击击中时播放声音效果, 如果在未采取任何措施的情况下同时发生多次命中,则可能会以异常音量播放。