概要
音を出す側
音を出すオブジェクトにスピーカー(AudioSource
)をつけて、そこに音源(AudioClip
)をセットする。
AudioSource
https://docs.unity3d.com/jp/current/Manual/class-AudioSource.html
AudioClip
https://docs.unity3d.com/jp/current/Manual/class-AudioClip.html
音を聞く側
AudioListener
を1シーンに1つ用意する。主にメインカメラがリスナーオブジェクトになる。
AudioListener
https://docs.unity3d.com/jp/540/Manual/class-AudioListener.html
参考
【Unity開発】Audioまとめ(基本編)【ひよこのエッセンス】
【Unity開発】Audioまとめ(3Dサウンド中心)【ひよこエッセンス】
オーディオファイル
基本的には非圧縮のwavファイルを使う
BGM / SE
BGM
- 一般的に、途切れることはない
- クロスフェードする可能性はある
- 一般的に、Spatial Blendは2D設定
こちらのスクリプトが使ってみて便利だった
【Unity】とっても簡単に扱えるBGM再生クラスを作ってみた。フェードイン、フェードアウト対応版
SE
- 単発の音
- 複数重なることがある
- 一般的に、Spatial Blendは3D設定
Play / PlayOneShot
Play
https://docs.unity3d.com/ja/540/ScriptReference/AudioSource.Play.html
PlayOneShot
https://docs.unity3d.com/ja/540/ScriptReference/AudioSource.PlayOneShot.html
サンプルを見る限り、
BGMのように重複せずにシンプルに音を鳴らすのがPlay
、
SEのように重複することを前提に音を鳴らすのがPlayOneShot
AudioMixer
解説:チュートリアル > Audio > オーディオミキサーとミキサーグループ
まずミキサーをつくると、デフォルトでMasterを親としたグループがつくられる。その下に操作したい音ごとにグループをつくっていく。(Masterで操作した値はすべてのグループに影響を与える)
上記の画像は、ポーズ画面になったらAttenuation(減衰)を下げているスナップショットを登録しているところ。スナップショットとは、ミキサー内で設定した値などをアセットのような形で登録できるもの。
解説:チュートリアル > Audio > オーディオミキサースナップショット
各グループの「B」ボタンは「バイパス」。オーディオグループにエフェクトをかけるか設定できる。
作成したグループをAudioSourceのOutputに設定してあげることで、ミキサーを通して出力することができる。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
public class MenuManager : MonoBehaviour {
public AudioMixerSnapshot paused;
public AudioMixerSnapshot unpaused;
Canvas canvas;
void Start () {
canvas = GetComponent<Canvas> ();
}
void Update () {
if (Input.GetKeyDown (KeyCode.Escape)) {
ToggleMenu ();
}
}
void ToggleMenu() {
canvas.enabled = !canvas.enabled;
// 時間依存で動いているものは止まる
Time.timeScale = Time.timeScale == 1 ? 0 : 1;
// スナップショットを切り替える
if(Time.timeScale == 0){
unpaused.TransitionTo(.01f);
} else {
paused.TransitionTo(.01f);
}
}
}
参考
Unityのオーディオミキサーを使って音声の変換や音量を変更する
Unityの一時停止で止まるもの、止まらないもの【Time.timeScale】
Ducking
ある音が再生された場合、他の音にエフェクトをかけたり音量を下げたりすること
解説:チュートリアル > Audio > Duck Volume オーディオエフェクト
ex. 銃撃した時に少しだけBGMが下がる
SEにSend
、BGMにDuck Volume
を設定。
SEの音がThresholdを超えた時にBGMが少し下がっている。