Reproduzir vários sons ao mesmo tempo

Página atualizada :
Data de criação de página :

Ambiente de verificação

Windows
  • Janelas 11
Unity Editor
  • 2021.3.3f1
Pacote do sistema de entrada
  • 1.3.0

Pré-requisitos para esta dica

As configurações a seguir foram feitas com antecedência como premissa para a descrição desta dica.

Sobre o material incluído na amostra

Os efeitos sonoros são emprestados dos seguintes sites.

Sobre arquivos de áudio

Os seguintes formatos de arquivo de áudio podem ser reproduzidos com os recursos padrão do Unity: Por favor, prepare-o com antecedência, pois ele será usado nessas dicas.

  • WAV (.wav)
  • OggVorbis (.ogg)
  • MPEG camada 3 (.mp3)

Para obter mais informações, consulte a documentação oficial do Unity.

Sobre a reprodução simultânea de vários áudios

Nas dicas anteriores, usamos o AudioSource para reproduzir um arquivo de áudio, mas quando tentamos fazer um único som e vários sons, o som anterior desapareceu. Por exemplo, se você tem duas explosões em um jogo, não é natural que o primeiro efeito sonoro desapareça quando a segunda explosão gera um efeito sonoro. Esta seção descreve como reproduzir o mesmo som várias vezes um sobre o outro.

Etapas para reproduzir áudio ao mesmo tempo

Aqui, vou explicar a partir do ponto em que criei um novo projeto, mas se você conhece Unity até certo ponto, você pode cortar apenas as partes relevantes e memorizá-las.

Desta vez, o efeito sonoro será reproduzido sempre que você clicar no botão. Crie sua interface do usuário conforme mostrado. Os detalhes são apropriados e bons.

Adicione um arquivo de som soltando-o em seu projeto.

Adicione Fonte de Áudio à hierarquia. Nesse caso, você não definirá o clipe de áudio diretamente para o AudioSource.

Adicione um script. ButtonEvent Deixe o nome como .

O script tem a seguinte aparência:

using UnityEngine;

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

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

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

AudioSource Pense nisso como uma aula para controlar o áudio, assim como as dicas anteriores.

AudioClip é uma classe que armazena dados de áudio. Você pode definir arquivos de áudio aqui.

AudioSource.PlayOneShot Se você passá-lo como um argumento para o método, você pode reproduzir os dados de AudioClip áudio. O áudio reproduzido por este método é controlado independentemente. Se você chamar esse método novamente, ele será reproduzido como uma nova voz separadamente da anterior. Portanto, é possível reproduzir o som novamente toda vez que esse método é chamado.

Anexe o script ao EventSystem.

Para "Fonte de áudio", defina a "Fonte de áudio" adicionada à hierarquia.

Para "Clipe de áudio", defina um arquivo de áudio do projeto.

Finalmente, defina o método como o evento click do botão.

Execute o jogo e clique no botão. Acho que os efeitos sonoros vão tocar. Além disso, se você clicar no botão novamente durante a reprodução, o novo som será reproduzido sem que o som anterior desapareça.

AudioClip Desta forma, agora é possível reproduzir o mesmo som em cima um do outro, reproduzindo o áudio via . Isso permite que o jogo seja jogado sem que o som anterior desapareça de forma não natural.

Desvantagens ao jogar com o AudioClip

AudioClip Eu era capaz de reproduzir o áudio em cima um do outro, reproduzindo-o usando , mas, pelo contrário, as seguintes desvantagens ocorrem.

O som torna-se barulhento

Como você pode ver se você clicar no botão continuamente, os sons se sobrepõem e o harmônico que é tocado torna-se cada vez mais alto. Por exemplo, se você quiser reproduzir um efeito sonoro quando um ataque atingir um jogo, Se vários golpes ocorrerem ao mesmo tempo sem tomar nenhuma medida, eles podem ser reproduzidos em um volume anormal.