はじめに
Unityのゲーム中に音声ファイルを再生する手順の一例をご紹介します。
インターネット上のデータをダウンロードして使用する場合は、
必ず、各サイトの使用ルールに則って下さい。
(万一のトラブルに備えるために絶対にルール厳守です。)
また、当記事では".mp3"形式の音声ファイルを用います。
目次
準備
新規にプロジェクトを作成し開きます。
"Assets"フォルダ直下に"AudioFiles"フォルダなどを作成するとファイル管理等に便利です。
用意した音声ファイルをプロジェクトに読み込みます。
(私は、ファイルエクスプローラを用いて"AudioFiles"フォルダにコピーしました。)
1.オーディオソースの新規作成
ヒエラルキー内を右クリックし、
"オーディオ"→"オーディオ ソース"をクリックします。
"AudioSource"オブジェクトが追加されます。
後述するスクリプトでオーディオクリップを読み込みますので、
"AudioSource"インスペクターの"オーディオクリップ"は「なし」のままで良いです。
(後述するPlay関数などの実行時に再生したいファイルが有効にならないことがある問題を回避するためです。)
任意のタイミングで再生させたいので、"ゲーム開始時に再生"チェックボックスはオフにします。
2.スクリプトの新規作成
プロジェクトウィンドウのファイル一覧を右クリックし、"作成"→"C#スクリプト"を選択します。
"NewBehaviourScript.cs"ファイルが作成されます。
続いてスクリプトを記述していきます。
まず、完成型は下記のようになります。(次項で解説します)
"NewBehaviourScript.cs"
作成できたら、スクリプトををAudioSourceオブジェクト"にアタッチします。
"NewBehaviourScript.cs"のインスペクターのAudioClipに再生したいファイルをドラッグ&ドロップします。
3.スクリプトの解説
まず、"AudioClip"型と"AudioSource"型の変数を用意します。
"AudioClip"はインスペクターで指定できるように"[SerializeField]"を指定します。
Start()関数では、AudioSourceコンポーネントを取得します。
その後、PlayAudioClip()関数を実行します。
PlayAudioClip()関数の動作は次のとおりです。
- LoadAudioData()関数でインスペクターで指定した音声ファイルを読み込みます
- "audioSource"の"clip"をファイル読み込み済みの"audioClip"と関連付けます
- audioSouce.Play()関数で再生を開始します。
4.シーンの実行と確認
シーンを実行して音声が再生されているか確かめます。
音声が鳴れば成功です。
5.終わりに
音声を再生するためにいくつかのサイトから知見を得ましたが、
残念ながら実行時にエラーが出てしまい鳴りませんでした。
"AudioClip"が有効にならないことが直接の原因でしたが、その理由は未だ不明です。
今回のスクリプトは試行錯誤の結果ですので、全ての環境で成功するとは限りません。
単に"AudioSource"を作り直したら再生されたという記事も見受けられました。
この記事が皆様の参考になりましたら幸いです。
最後に、参考にさせていただいたサイトの記者様に大変お世話になりました。
この場を借りて御礼申し上げます。
ここまで読んで下さり誠にありがとうございました。
6.備考
音が鳴らないときに確認するポイントとして、実行時にオーディオをミュートしているか確認してみましょう。
(クリックで拡大)
7.参考サイト
Unityから音が出ない時の解決方法(@ysk2501様)
https://qiita.com/ysk2501/items/8413c10ec3eb638e678d
[Unity]効果音(SE)を再生する方法。複数の音を鳴らすサンプルコードも用意しました(@s_ryone様)
increment-log.com/unity-sound-se-play/
...and more
皆様ありがとうございました!