了解しました。Unity初心者向けにリライトしますね。
コードは現在のUnityで動く書き方に更新し、文体は親しみやすい丁寧語でいきます。
目次
【Unity】AudioSource.PlayOneShotで効果音を鳴らす方法【初心者向け】
Unityでゲームに効果音やBGMを入れる方法を解説します。実際にコードを書いて音を鳴らすところまでやってみましょう。
Unityで使える音声ファイル形式
まず、どんな音声ファイルが使えるか知っておきましょう。
| 形式 | 特徴 | 向いている用途 |
|---|---|---|
| WAV / AIFF | 無圧縮で高音質。ファイルサイズは大きい。再生時にCPU負荷が低い | 効果音(SE) |
| MP3 / OGG | 圧縮されていてファイルサイズが小さい。若干の音質劣化あり | BGM |
迷ったら、短い効果音はWAV、長いBGMはMP3かOGGを選べばOKです。
音を鳴らす仕組みを理解しよう
Unityで音を扱うには、3つのコンポーネントの役割を覚えておきましょう。
| コンポーネント | 役割 |
|---|---|
| AudioClip | 音声データそのもの |
| AudioSource | 音を再生するスピーカー |
| AudioListener | 音を聞く耳。カメラに最初からついている(シーンに1つだけ) |
方法1:とりあえず音を鳴らしてみる(コードなし)
一番シンプルな方法です。コードを書かずに音を再生できます。
- Hierarchyで右クリック →「Create Empty」で空のGameObjectを作成
- 作成したGameObjectを選択し、Inspectorで「Add Component」→「Audio Source」を追加
- Audio Sourceの「AudioClip」欄に、鳴らしたい音声ファイルをドラッグ&ドロップ
- 「Play On Awake」にチェックが入っていることを確認
- 再生ボタンを押す
これでゲーム開始と同時に音が鳴ります。
方法2:クリックで効果音を鳴らす(コードあり)
マウスの左クリックと右クリックで、別々の効果音を鳴らしてみましょう。
手順
- Hierarchyで空のGameObjectを作成し、Audio Sourceを追加
- 以下のスクリプトを作成してGameObjectにアタッチ
- Inspectorでスクリプトの「Sound 01」「Sound 02」に音声ファイルを設定
- 再生して、左クリック・右クリックで音が鳴ることを確認
スクリプト
csharp
using UnityEngine;
public class PlaySound : MonoBehaviour
{
public AudioClip sound01;
public AudioClip sound02;
private AudioSource audioSource;
void Start()
{
// AudioSourceコンポーネントを取得
audioSource = GetComponent<AudioSource>();
}
void Update()
{
// 左クリックで sound01 を再生
if (Input.GetMouseButtonUp(0))
{
audioSource.PlayOneShot(sound01);
}
// 右クリックで sound02 を再生
if (Input.GetMouseButtonUp(1))
{
audioSource.PlayOneShot(sound02);
}
}
}PlayOneShotとは?
AudioSource.PlayOneShot()は、効果音の再生に適したメソッドです。
特徴
- 音を1回だけ再生する
- 同じAudioSourceで音を重ねて再生できる(連打しても大丈夫)
- 音量を第2引数で調整可能
csharp
// 音量70%で再生する例
audioSource.PlayOneShot(sound01, 0.7f);注意点として、同時に大量の音を鳴らすと処理が重くなります。連射する効果音などは、同時発生数に気をつけましょう。
よくあるエラーと対処法
| 症状 | 原因と対処 |
|---|---|
| 音が鳴らない | AudioListenerがシーンにあるか確認。カメラを削除していると消えている場合がある |
| エラー「AudioSource is missing」 | GameObjectにAudioSourceが追加されていない |
| 音が小さい/聞こえない | AudioSourceやAudioListenerの音量設定を確認 |
まとめ
- 効果音にはWAV、BGMにはMP3/OGGが適している
- 音を鳴らすにはAudioSourceコンポーネントが必要
PlayOneShot()を使えば、効果音を重ねて再生できる
まずは簡単な効果音から試して、ゲームに音を入れる感覚をつかんでみてください。
