Unityでのサウンド再生システムは、主に3つの要素から構成されています。AudioClip、AudioSource、AudioListenerです。これらの要素を適切に組み合わせることで、ゲーム内でBGMや効果音を再生することができます。
AudioClipは音声ファイルそのものを指します。mp3やwavなどの形式のファイルをUnityにインポートすると、自動的にAudioClipとして認識されます。BGMとして使用する場合は、通常長めの楽曲ファイルを使用します。
AudioSourceは音を再生するためのコンポーネントです。GameObject(ゲーム内のオブジェクト)にアタッチして使用します。AudioSourceには再生したいAudioClipを設定し、さらに音量や再生速度などの各種パラメータを調整することができます。
AudioListenerは音を聞く役割を果たすコンポーネントです。通常、シーン内のメインカメラにデフォルトでアタッチされています。AudioListenerは1つのシーンに1つだけ存在する必要があります。
BGMを再生する基本的な流れは以下のようになります:
この基本的な仕組みを理解することで、UnityでのBGM再生の土台を築くことができます。
UnityでBGMを再生するには、主にAudioSourceコンポーネントを使用します。以下に、具体的な手順と設定方法を説明します。
using UnityEngine
public class BGMController : MonoBehaviour
{
private AudioSource audioSource
void Start()
{
audioSource = GetComponent }
public void PlayBGM()
{
audioSource.Play()
}
public void StopBGM()
{
audioSource.Stop()
}
public void PauseBGM()
{
audioSource.Pause()
}
public void SetVolume(float volume)
{
audioSource.volume = Mathf.Clamp01(volume)
}
}
BGMをループ再生することは、ゲームの雰囲気を維持するために重要です。Unityでは、簡単な設定でBGMのループ再生を実現できます。
using UnityEngine
public class BGMLoopController : MonoBehaviour
{
private AudioSource audioSource
void Start()
{
audioSource = GetComponent audioSource.loop = true // ループを有効にする
}
public void ToggleLoop()
{
audioSource.loop = !audioSource.loop // ループのオン/オフを切り替える
}
}
using UnityEngine
public class SeamlessLoopController : MonoBehaviour
{
public AudioClip bgmClip
public float loopStartTime = 0f
public float loopEndTime = 60f
private AudioSource audioSource
void Start()
{
audioSource = GetComponent audioSource.clip = bgmClip
audioSource.loop = true
audioSource.Play()
}
void Update()
{
if (audioSource.time >= loopEndTime)
{
audioSource.time = loopStartTime
}
}
}
ゲーム内でのBGMの音量調整は、プレイヤーの体験を向上させる重要な要素です。Unityでは、個別のAudioSourceの音量調整だけでなく、複数の音源を一括で管理するオーディオミキシング機能も提供しています。
public class VolumeController : MonoBehaviour
{
private AudioSource audioSource
void Start()
{
audioSource = GetComponent }
public void SetVolume(float volume)
{
audioSource.volume = Mathf.Clamp01(volume)
}
}
using UnityEngine
using UnityEngine.Audio
public class AudioMixerController : MonoBehaviour
{
public AudioMixer audioMixer
public void SetBGMVolume(float volume)
{
audioMixer.SetFloat("BGMVolume", Mathf.Log10(volume) * 20)
}
public void SetMasterVolume(float volume)
{
audioMixer.SetFloat("MasterVolume", Mathf.Log10(volume) * 20)
}
}
using UnityEngine
using System.Collections
public class BGMFader : MonoBehaviour
{
private AudioSource audioSource
void Start()
{
audioSource = GetComponent }
public IEnumerator FadeIn(float duration)
{
float startVolume = 0.0f
audioSource.volume = startVolume
audioSource.Play()
while (audioSource.volume < 1.0f)
{
audioSource.volume += Time.deltaTime / duration
yield return null
}
audioSource.volume = 1.0f
}
public IEnumerator FadeOut(float duration)
{
float startVolume = audioSource.volume
while (audioSource.volume > 0.0f)
{
audioSource.volume -= startVolume * Time.deltaTime / duration
yield return null
}
audioSource.Stop()
audioSource.volume = startVolume
}
}
ゲーム内でBGMと効果音(SE)を適切に組み合わせることは、プレイヤーの没入感を高める上で非常に重要です。Unityでは、BGMと効果音を効果的に管理し、再生するための様々な技術が利用可能です。
using UnityEngine
using System.Collections.Generic
public
マンガでわかる Unityゲーム開発入門
↑
実は、こちらの本はamazonのkindleアンリミテッドでタダで読めます。
でもそれ以外の分厚いUnity本は、アンリミテッドの対象外。良いのはわかるけど、高い!
そこで、2,550円引きでほしいUnity本をゲットする方法です。
この方法だと、完全に0円でゲットできます。
定価2,520円の本に2,550円割引が効く=0円です。
やり方
↓
DMMブックスのクーポンと特典を併用します。
実は、DMMブックスは利用者を増やすために初回90%オフ(最大2,000円引き)のクーポンを配ってます。初回利用なら、誰でも使えます。
さらに、DMMプレミアムという動画サブスクを無料お試しすると、こちらも特典として550ポイント(550円相当)もらえるんですね。
クーポンと特典合わせて2,550円引きでUnity本が買えるというわけ。
詳しくはこちらの記事にまとめました。