Unity – 効果音(SE)を再生する方法。複数の音を鳴らすサンプルコードも用意しました

Unityで効果音(SE)を再生する方法について。複数の音を鳴らす方法も分かったのでメモしておきます。あとJavascriptでのコーディングはしていないので、便宜上C#での説明になります。

ちなみにUnityで使用できる音声ファイルのフォーマット(拡張子)は

  • aif
  • wav
  • mp3
  • ogg

です。

参考: Unity – Audio Files

効果音を鳴らす方法

効果音を再生する方法は

  • 音声用コンポーネントで効果音を用意して再生
  • プログラム側で変数に効果音を格納して用意して再生

の2種類があります。(他にもあるかもしれませんが、僕はこれらの方法しか分からないので2種類としておきます)

また、以降説明する内容は1つのゲームオブジェクトにコンポーネントやスクリプトを設定すること前提とします。

音声ファイルをプロジェクトに取り込んでおく

各々での再生方法の前に、音声ファイルをプロジェクトに取り込んでおきましょう(インポート)。

効果音として鳴らしたい音声ファイルをプロジェクトビューにドラッグ&ドロップするか、メニューの「Assets > Import New Asset…」からプロジェクトにインポートします。

unity-sound-se-play01
この赤枠部分にドラッグ&ドロップ

 

これで取り込みは完了です。

音声用コンポーネントで効果音を用意して再生

それではコンポーネントに音声ファイルを用意して再生する方法から。

効果音を鳴らしたいゲームオブジェクトに音声用コンポーネントの「Audio Source」を追加します。追加方法はゲームオブジェクトを選択し、インスペクターウインドウの「Add Component > Audio > Audio Source」、もしくはメニューの「Component」にも同じメニューがあるので同じくAudio Sourceを選びます。

複数の効果音を同じゲームオブジェクトから鳴らしたい場合は、複数のAudio Sourceを追加しましょう。

unity-sound-se-play02
このボタンから追加できます

 

Audio Sourceコンポーネントを追加したら、「Audio Clip」の項目にプロジェクトビューからドラッグ&ドロップ、もしくは項目右の「○」マークをクリックして音声ファイルを設定します。Audio Sourceを2つ以上追加している場合も同様にそれぞれ音声ファイルを設定します。

unity-sound-se-play03

(コンポーネントを追加した初期状態では「Play On Awake」にチェックがついてます。これはオブジェクトが生成された段階で再生する設定なので、もし生成と同時に再生してほしくない場合はチェックを外します)

これでコンポーネントによる音声の用意は完了です。次にスクリプトを作成し、以下のソースコードを記述してオブジェクトに追加します。この例では「PlaySound」というスクリプト名です。(スクリプト名とClass名が同じでなければコンパイルエラーになるので注意して下さい)

このスクリプトを追加したら、ゲームを実行してキーボードのKを押してみます。音声が鳴ればOKです。

音声コンポーネント(音声ファイル)が複数の場合

もし追加したAudio Sourceコンポーネントが2つ以上なら10行目のGetComponentの末尾に「s」を追加し、GetComponentsにします。(単数形から複数形に修正)。

そして型指定のAudioSourceに”[]”(大括弧)を追加し、AudioSource[]にします(ただの変数から配列に修正)。変数への格納部分も同様に修正します。(以下を参考にして下さい)

参考: Can I play multiple AudioSources from one gameobject? – Unity Answers

プログラム側で変数に効果音を格納して再生

次にプログラム側で効果音を用意し再生する方法です。プログラムで効果音を用意するには様々な方法があると思うのですが、とりあえず簡単なサンプルを載せておきます。

この例では2つの変数を用意していますが、必要であれば3以上、不要であれば1つにします。また、Update関数内のキーボード入力で再生するif文も変数に合わせて追加、もしくは削除しておきます。

そして、効果音を鳴らしたいゲームオブジェクトに上記のスクリプトと「Audio Source」コンポーネントを追加して下さい。スクリプト名は「PlaySound」です。

publicな変数には、インスペクターウインドウからドラッグ&ドロップで音声ファイルを設定します。

unity-sound-se-play04

 

音声ファイルの設定が終わったらゲームを実行して確認してみましょう。(上記のソースコードのままで言うなら)KLキーを押下すると音が鳴るはずです。

参考: Unity – Scripting API: AudioSource.PlayOneShot


ちなみにUnityは自動的に非圧縮の音声ファイル(wav)をoggに変換してくれるようですね。Unityで自動変換するより専用のソフトで変換した方が良いようです。

あと書いてて疑問に思ったのですが、BGMの再生などはどうやるんですかね。ゲームオブジェクトから音を鳴らすとサウンドの再生に位置関係が発生してしまって、左から、後ろから聞こえるようになってしまうので。ココらへん分かったらまたブログでも書こうかと思います。

最終更新日:2017年3月19日

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

トラックバック

トラックバックは現在ありません。

Trackback: https://increment-log.com/unity-sound-se-play/trackback/