こんにちは、ともくんのゲーム作り部屋にようこそ!
このページでは、
「UnityのAudioSourceコンポーネントが知りたい!」
「AudioSourceの使い方が分からない。」
というお悩みの方に向けた内容となっています。
Unityで音を流す際に必要になるのが、AudioSourceコンポーネントです。
このAudioSourceコンポーネントは、紐づけた音声データを流す役割があります。
また、ただ音声を流すだけではなく、音量やピッチを変えたり、オーディオフィルターを使うことで、音を加工することができるようになります。
そこで、このページでは、Unityで音を流す際に必要となってくるAudioSourceコンポーネントについて、特徴や使い方、また設定項目までをまとめていきます。
- AudioSourceとは?音を発生させるためのコンポーネント
- AudioSourceコンポーネントの使い方
- コンポーネントをアタッチする
- AudioSourceコンポーネントの設定項目
- Audio Resource:再生する音源を紐づける
- Output:Audio Mixerを通して出力できる
- Mute:音声をミュートにする
- Bypass Effects:Audio Sourceへのフィルター効果のオンオフ
- Bypass Listener Effects:Audio Listenerへのフィルター効果のオンオフ
- Bypass Reverb Zones:Reverb Zonesのオンオフを決める
- Play On Awake:シーン起動と同時に音源を流すかどうか
- Loop:音源をループして流すかどうか
- Priority:音源の優先度を決める設定
- Volume:音源の大きさを決める値
- Pitch:音源の速度を変化させる値
- Stereo Pan:左右のどこから音が聞こえるかを決める
- Spatial Blend:音源を立体的にするかどうかを決める
- Reverb Zone Mix:Reverb Zoneの影響をどのくらいにするか
- 3D Sound Settings:Spatial Blendに比例して適用される設定
- 音を再生するのはPlayメソッド
- まとめ
AudioSourceとは?音を発生させるためのコンポーネント
AudioSourceコンポーネントは、Unity上で音を流すためのコンポーネントです。
このAudioSourceコンポーネントは、ラジカセと同じような役割を持っています。
ラジカセはそのままだと音が出ませんが、カセットやCDなど音が入ったものをセットすることで音を流すことができます。
そして、人間はそのラジカセから流れている音を耳で受け取ることで、音を聞くことができます。

Unityでは、このラジカセの役割をAudioSourceコンポーネントが担っていて、カセットにあたるAudioClipという音声データをこのAudioSourceコンポーネントにセットしてあげることで、音が流せるようになります。
また、ゲーム内でこの音を拾う耳の役割をしているのがAudioListenerコンポーネントで、このAudioListenerで聞いた音が実際にゲームで流れてきます。
そのため、Unityで音を出す仕組みとして、
という3つが使われており、その中でAudioSourceコンポーネントはラジカセと同じで、音声データを流す役割を持っています。
AudioSourceコンポーネントの使い方
ここからは、AudioSourceコンポーネントの使い方についてまとめていきます。
コンポーネントをアタッチする
AudioSourceコンポーネントを使う場合は、音を流したいオブジェクトを選択して、インスペクターウィンドウの「Add Component」をクリックします。

一覧から「Audio」を選択します。

さらに、その中にある「AudioSource」を選択することで、AudioSourceコンポーネントがアタッチされ使えるようになります。

AudioSourceコンポーネントの設定項目
AudioSourceコンポーネントには、様々な設定があります。

それぞれの項目を簡単に紹介していきます。
Audio Resource:再生する音源を紐づける
Audio Resourceは、このAudioSourceコンポーネントで流す音声データを紐づける項目です。
簡単にいえば、どのカセットの音声を流すかを決める設定です。
Unityに音声データをインポートすると、Audio Clipというデータ形式(clip)で保存されるので、プロジェクトウィンドウからこのAudio Clipをドラッグ&ドロップするか、一覧から設定して紐づけることができます。

Output:Audio Mixerを通して出力できる
Outputは、Audio Mixerを通して音声を出力することができる項目です。
AudioSourceからの音声は、デフォルトではAudioListenerによってゲーム内から出力されますが、これを設定することでAudio Mixerを通して出力することができます。
Audio Mixerとは、他の音源とミックスしたり、エフェクトなどをかけることができる機能で、使用する場合は「Window」の「Audio」の中にある「Audio Mixer」を選択して、

+ボタンから新しくMixerを作って設定することで、このAudio Mixerを介してその音を出力することができます。

Mute:音声をミュートにする
Muteにチェックを入れると音声がミュートされて、音が流れているけど音量が0の状態になります。
BGMなどの音源で、ゲーム内からボタンなどを押してミュートさせたい場合に活用できます。
Bypass Effects:Audio Sourceへのフィルター効果のオンオフ
Bypass Effectsは、Audio Sourceの音にエフェクト効果を付けられるオーディオフィルターをオンオフすることができる項目です。
オーディオフィルターとは、音の周波数帯域によって変化させたり、エコーなどのオーディオ効果を付けられる機能で、以下のようなものがあります。
オーディオフィルター | 概要 |
---|---|
Audio Chorus Filter | 少し変化した音を重ねてコーラス効果を与える |
Audio Distortion Filter | 音を歪ませる効果を与える |
Audio Echo Filter | 音声を遅延して繰り返してエコー効果を与える |
Audio High Pass Filter | 低い周波数の音域をカットする効果を与える |
Audio Low Pass Filter | 高い周波数の音域をカットする効果を与える |
Audio Reverb Filter | 音声を響かせてリバーブ効果を与える |
このオーディオフィルターは、Audio SourceもしくはAudio Listenerの紐づいているオブジェクトに使うことができ、Bypass EffectsはAudio Sourceに紐づいているオーディオフィルターの効果をオンにするかオフにするかを決めています。
なお、オーディオフィルターを使う場合は、「Add Component」から追加することでオーディオ効果を付けることができます。

Bypass Listener Effects:Audio Listenerへのフィルター効果のオンオフ
Bypass Listener Effectsは、Audio Listenerが拾う音にエフェクト効果を付けられるオーディオフィルターをオンオフすることができる項目です。
先ほどのBypass Effectsは、Audio Source側のオーディオフィルターをかけるかどうかを決めていましたが、このBypass Listener EffectsはAudio Listener側のフィルター効果を使うかどうかを決めています。

Bypass Reverb Zones:Reverb Zonesのオンオフを決める
Bypass Reverb Zonesは、Reverb Zonesによるリバーブの効果のオンオフを決めている項目です。
Reverb Zonesとは、特定の場所に設定することでその座標からの距離に合わせて、リバーブの強弱を決めることができる機能で、洞窟などでリバーブを徐々にかけていくという場合に使えます。
Reverb Zonesを使う際は、ヒエラルキーウィンドウから「Audio Reverb Zone」を追加するか、空のオブジェクトなどに「Add Component」から追加することで設定できます。

Play On Awake:シーン起動と同時に音源を流すかどうか
Play On Awakeは、シーンが起動すると同時にAudio Sourceに紐づいているAudio Clipの音声データを自動で再生する項目です。
このPlay On Awakeは、デフォルトでチェックが入っていてオンになっていますが、オフにした場合は自動で再生されなくなるので、PlayメソッドもしくはPlayOneShotメソッドで音声を流す処理をする必要があります。
Loop:音源をループして流すかどうか
Loopは、Audio Sourceの音源が再生された場合に、ループして何度も音源を繰り返して再生させるかどうかを決めている項目です。
Loopをオンにした場合は、音声が止まらずに流れ続けることになるため、BGMとして使用する場合が多いです。
また、音声を止める場合はStopメソッドを使うか、オブジェクトをオフにするなどの処理が必要になります。
Priority:音源の優先度を決める設定
Priorityは、音源が複数再生された場合に、どの音源を優先して流すかを決めている設定です。
複数の音源が再生されると、かき消されてしまうことがあるため、その優先度を決めています。
デフォルトが128となっていて、数値が小さいほど優先順位が高く、反対に大きくなると優先順位が低くなります。
Volume:音源の大きさを決める値
Volumeは、音源の大きさを決めている値です。
デフォルトの1が最大で、小さくすればその分音も小さくなります。
Pitch:音源の速度を変化させる値
Pitchは、音源を再生する速度を決めている値です。
デフォルトが「1」で音源と同じ速度になっていて、数字をあげるとその分早くなり音程も上がり、反対に数字を下げると遅くなり音程も下がります。
また、Pitchの値を0未満にすると、音源が逆再生されます。
Stereo Pan:左右のどこから音が聞こえるかを決める
Stereo Panは、音声の左右の音量比率を決めて、どの位置から音が聞こえるかを決める設定です。
デフォルトの「0」は、スピーカーの左右から同じ音量で聞こえるようになり、Left側の「-1」にすると、スピーカーの左側からしか音が聞こえず、反対にRight側の「1」にすると、スピーカーの右側からしか音が聞こえなくなります。
例えば、スクリプトを使って「1」から「-1」に徐々に数値を変えることで、右から左に向かって音を流すことができます。
Spatial Blend:音源を立体的にするかどうかを決める
Spatial Blendは、音源を3Dの立体的に表現するかどうかを決める項目です。
このSpatial Blendは、この後紹介する3D Sound Settingsをどの程度影響するかを決めていて、2Dの「0」だと影響しませんが、数値を3Dに近づけていけばいくほど、3D Sound Settingsの影響を高めてより立体的な音になっていきます。
Reverb Zone Mix:Reverb Zoneの影響をどのくらいにするか
Reverb Zone Mixは、Reverb Zonesによるリバーブの効果の影響をどのくらい受けるかを決めている項目です。
デフォルトが「1」になっていて、数値を下げるとリバーブ効果が低減して、数値を上げるとリバーブ効果が増加します。
3D Sound Settings:Spatial Blendに比例して適用される設定
3D Sound Settingsは、音を立体的に表現するための数値設定で、Spatial Blendの値に比例して音を変化させることができます。
この3D Sound Settingsを使うことで、音源からの距離が離れると音量が下がったり(減衰)、ドップラー効果の影響を与えたりすることができます。
3D Sound Settingsで設定できる項目は、以下の5つがあります。
設定項目 | 概要 |
---|---|
Doppler Level | ドップラー効果の度合いを設定する項目。 |
Spread | 音の広がりの角度を設定する項目。 |
Volume Rolloff | 音源からの距離に応じてどの程度減衰するかを決める項目。 「Logarithmic Rolloff」「Linear Rolloff」「Custom Rolloff」から選択 |
Min Distance | 減衰が始まるまでの音源からの最小距離。 この距離までは音量の減衰が行われず、この値より離れると音量の減衰が始まる。 |
Max Distance | 音量の減衰が行われる音源からの最大距離。 この距離より離れるともう減衰されず、音量が維持される。 |
音を再生するのはPlayメソッド
AudioSourceコンポーネントをアタッチして、Audio Clipの音声データを紐づけた後に、「Play On Awake」ではなくタイミングに合わせて音を流したい場合は、Playメソッドが使われます。
このPlayメソッドは、AudioSourceコンポーネントで定義されているメソッドで、そのAudioSourceに紐づいているAudio Clipを再生するというラジカセの再生ボタンの役割を持っています。
例えば、マウスをクリックしたら音声を流すという処理を作りたい場合は、
using UnityEngine;
public class SoundManager : MonoBehaviour
{
AudioSource audioSource;
void Start()
{
audioSource = GetComponent<AudioSource>(); // AudioSourceコンポーネントを取得
}
void Update()
{
if (Input.GetMouseButtonDown(0)) // マウスをクリックした場合
{
audioSource.Play(); // 音声を流す
}
}
}
上記のように、先に9行目でGetComponentメソッドでAudioSourceを取得しておいて、if文の中の16行目でその中にあるPlayメソッドで音声を流す処理を書いてあげることで、マウスをクリックする度に音を流すことができます。
なお、Playメソッドで音声を流す場合、音を重複することができないので、前の音が鳴っている最中に再度音を流そうとすると、前の音が止まり最初から音声が流れることになります。
音を重複させて流したい場合は、Playメソッドの代わりにPlayOneShotメソッドを使います。
Unityで音を流す方法については、以下のページでより詳しくまとめていますので、参考にしてみてください。
まとめ
このページでは、Unityで音を流す際に使うAudioSourceコンポーネントについて、どんな役割を持っているのか、また使い方や設定項目についてまとめていきましたが、いかがでしたでしょうか?
AudioSourceコンポーネントは、ラジカセと同じような役割で、Unity内で音声を流す役割を持っています。
このAudioSourceコンポーネントに、音声データであるAudio Clipを紐づけてあげることで、音を流せるようになります。
また、AudioSourceコンポーネントには様々な設定項目があるので、好みの調整を行うことができるようになります。
最後までお読みいただきまして、ありがとうございました!
コメント