単一の効果音の再生・一時停止・停止を行う
検証環境
- Windows
-
- Windows 11
- Unity エディター
-
- 2021.3.3f1
- 入力システムパッケージ
-
- 1.3.0
この Tips の前提設定
この Tips の説明の前提として以下の設定を事前に行っています。
サンプルに付属している素材について
以下のサイト様より効果音を借用しています。
音声ファイルについて
Unity の標準機能で再生できる音声ファイルの形式は以下のようなものがあります。本 Tips で使用するので事前に用意しておいてください。
- WAV (.wav)
- OggVorbis (.ogg)
- MPEG layer 3 (.mp3)
詳しくは Unity 公式のマニュアルを参照してください。
効果音の再生について
効果音を再生する方法についてはいくつかありますが、ここでは標準機能を使用しつつ簡単な方法で再生できる手順について説明したいと思います。
内容としてはボタンを配置してボタンをクリックすることによって再生・一時停止・停止ができるようにします。 実際のゲームでは同様の処理をボタン以外で実装すればOKです。
まずは図のように効果音を再生するためのボタンを配置します。
用意したサウンドファイルをプロジェクトにドロップして追加します。
次にヒエラルキーに「オーディオ ソース」を追加します。
作成した Audio Source を選択すると Audio Source コンポーネントに「オーディオクリップ」があるので、そこにプロジェクトから音声ファイルをドロップして設定します。
ちなみにこのままゲームを開始すると設定した効果音がいきなり流れます。これは「ゲーム開始時に再生」にチェックが入っているためです。 いきなり効果音を再生することはまずないのでこのチェックは外しておきます。
次にスクリプトを作成します。名前は SoundPlayer
としておきます。
スクリプトは以下のようにします。
using UnityEngine;
public class SoundPlayer : MonoBehaviour
{
[SerializeField] private AudioSource AudioSource;
public void OnClickPlay()
{
// オーディオを再生します
AudioSource.Play();
}
public void OnClickPause()
{
// オーディオを一時停止します
AudioSource.Pause();
}
public void OnClickStop()
{
// オーディオを停止します
AudioSource.Stop();
}
}
AudioSource
は後でエディターからセットします。この AudioSource は先ほど効果音をセットしたものとなります。
AudioSource
にそれぞれ Play
, Pause
, Stop
メソッドがあるのでそれぞれ再生、一時停止、停止を実行することが可能です。
スクリプトは Audio Source にアタッチしてもいいのですが、今回は EventSystem にアタッチします。 スクリプトに先ほど作成した Audio Source をセットしておいてください。
後は3つのボタンのクリックイベントに各メソッドを割り当てます。
設定が終わったらゲームを実行して効果音が再生されるか確認します。
再生、一時停止、停止は一般的に使われる用語なので特に詳しく書く必要もないですが以下のように動作すると思います。
- 再生ボタンをクリックすると効果音が1回だけ再生され最後まで再生される
- 再生中に一時停止ボタンをクリックすると再生されている音が止まる
- 一時停止中に再生ボタンをクリックすると停止していた位置から音が再生される
- 再生中に停止ボタンをクリックすると再生されている音が止まる
- 停止中に再生ボタンをクリックすると最初から再生される
- 一時停止中に停止ボタンをクリックすると一時停止していた位置が解除され次回再生時は最初からになる
- 再生中に再生ボタンをクリックすると、現在再生されている音は停止され初めから再生される
AudioSource 単体で利用した場合のデメリット
一応回避方法はありますが今回の Tips では以下のデメリットがあります。 これらの対処法については別の Tips で紹介します。
同じ音を2つ以上同時に再生できない
これは再生ボタンを何回も押せば確認できますが、新しい音を再生したときに前の音が消えてしまいます。 デメリットと言えばデメリットですが、逆に同じ音を重ねて再生してしまうと音量がとても大きくなるのでそれを防ぐという意味合いではメリットではあります。 ただやはり前の音が消えてしまうので、音の種類によっては不自然になります。
再生する音の種類の数だけ AudioSource を用意しなければならない
AudioSource にセットできるオーディオクリップはひとつだけなので音の種類が増えるだけ AudioSource を用意する必要があります。 AudioSource を一つだけ用意して別な音を再生するときにオーディオクリップを変える方法もありますが、 前に書いた同じ音を2つ以上同時に再生できない問題により前の音が消えてしまうので不自然です。