【Unity】重複ありのBGMの鳴らし方「Play()」「PlayOneShot()」

Unity

はじめに

この記事ではUnityでBGMやSEを鳴らす方法を紹介します。

 

 

準備

1、音源ファイルの準備

Asset内に適当なフォルダを作成し、

音源ファイル(mp3かwav)を入れてください。

 

音源をクリックして開き、

Inspectorから設定を変更していきます。

 

Force To Mono

チェックを入れるとモノラルになります。

 

これだけでファイルサイズが半分くらいになります。

 

Inspectorの下の方にある、

Original Size(元のファイルサイズ)と

Imported Size(変更後のファイルサイズ)で

見比べてみてください。

 

サウンドエフェクト(SE)など、

音質が低くても問題ないものは

どんどんモノラルにしましょう。

 

Load Type

初期では「Compressd In Memory」になってますが、

これはメモリを使用するので、

基本的には「Decompress On Load」を使用し、

BGMのみ「Streaming」をおすすめします。

 

・Decompress On Load

シーンを読み込んだ時、

圧縮されているファイルを展開してメモリにロードします。

 

他の2つは再生時に展開処理をするのに対し、

これはすでに展開してあるので、CPUへの負荷が低いです。

 

ただし、ファイルサイズが大きすぎると、

メモリーを大量に使用するので、

そのときは以下2つを使用してください。

 

・Compressd In Memory

サウンドファイルはメモリ内で圧縮されたままです。

再生時に展開するのでCPUへの負荷が高いです。

 

・Streaming

ファイルをロードしながら再生するので、

使用するメモリが少ないです。

 

ただし、CPUへの負荷はあります。

 

BGMなどのサイズが大きいものに適しています。

 

 

最後に、Applyをクリックして保存してください。

 

 

2、AudioSourceの設置

Hierarchy上に右クリックで「Create Empty」で

空オブジェクトを作成し、

Inspectorで「Add Component」をクリック。

 

「Audio Source」で検索して、

このコンポ―ネントを2つ設置してください。

 

もちろん、使用する音源の数に合わせて変更してください。

 

Audio Clip欄に音源ファイルをドラッグ&ドロップしてください。

 

ゲームを実行すると音がなります。

 

Audio Sourceの設定は以下を参考にして行ってください。

 

・Play On Awake

ゲーム実行時に音源を再生するかどうか。

 

・Loop

音源をループ再生するかどうか。

 

・Volume

音量調整。0 ~ 1。

 

ここで注意点ですが、Audioを鳴らすには、

AudioListenerを設置する必要があります。

 

通常はMain Cameraにアタッチされています。

1つのシーンに1つAudioListernerが必ず必要です。

アタッチするオブジェクトは何でも構いません。

 

 

スクリプトから音源再生(重複なし)「Play()」

適当なスクリプトを作成し、

AudioSourceをアタッチしているオブジェクトに

アタッチしてください。

 

今回は複数のAudioSourceを取得したいので、

配列で変数を宣言してください。

 

ここでポイントです!

配列を使ってコンポ―ネントを取得するときは、

GetComponentsと記入してください。

 

今回はキーボードの1か2を押したら

音声が流れます。

 

ゲーム実行時に音を流したくないので、

AudioSourceのPlay On Awake のチェックは外してください。

 

これで実行して1か2を押すと、音声が鳴ります。

 

 

スクリプトから音源再生(重複あり)「PlayOneShot()」

 

コインをたくさん獲得したときのように、

チャリンチャリンという音を重ねて流したいときは、

のように使用します。

 

まず、AudioClipの配列をpublicで宣言してください。

これで、InspectorにAudioClipの欄が現れるので、

そこに音源をドラッグ&ドロップしてください。

 

次に

のように使用してください。

 

AudioSourceの方は[0]でも[1]でも構いません。

どれでも同じです。

 

clip[0]がInspector上のelement[0]に対応しています。

 

これでゲームを実行し、キーボードの3か4を押すと音が鳴ります。

 

短い音源だと分かりにくいので、

BGM等の長い音源を何度も鳴らしてみてください。

 

Play()では実行するたびに初めから音が鳴っていましたが、

今回は音が重なって騒がしくなっていると思います。

 

場合によっては大きい音になるので注意してください。

 

忙しい人のためのUnity入門講座へ戻る

 

タイトルとURLをコピーしました