Amazonプライム感謝祭開催中!セール会場へ

Unity│AudioSource.PlayOneShotで効果音を鳴らす方法

本記事では、Unity初心者向けに効果音の再生手順を解説します。

スクリプトは現在のUnityで動作する書き方に更新し、基本的な実装手順を丁寧に整理しました。

目次

【Unity】AudioSource.PlayOneShotで効果音を鳴らす方法【初心者向け】

Unityでゲームに効果音やBGMを組み込む手順を解説します。

実際にコードを書いて音を鳴らす手順を確認しましょう。

Unityで使える音声ファイル形式

はじめに、Unityで主に使われる音声ファイル形式とそれぞれの特徴を確認します。

形式特徴向いている用途
WAV / AIFF無圧縮で高音質。ファイルサイズは大きいが再生時のCPU負荷が低い効果音(SE)
MP3 / OGG圧縮形式でファイルサイズが小さい。わずかに音質が劣化する場合があるBGM

基本的には、再生時間が短い効果音にはWAV形式を、再生時間が長いBGMにはMP3形式またはOGG形式を選ぶのが標準的です。

音を鳴らす仕組みを理解しよう

Unityで音声を再生するには、まず基本となる3つの要素の役割を把握しておく必要があります。

コンポーネント役割
AudioClip音声データそのもの
AudioSource音を再生するスピーカー
AudioListener音を聞くマイクや耳の役割。初期状態のMain Cameraに設定されており、シーン内に1つだけ配置する

方法1:とりあえず音を鳴らしてみる(コードなし)

もっともシンプルな方法です。

スクリプトを書かずにコンポーネントの設定だけで音を再生できます。

  1. Hierarchyで右クリックし、「Create Empty」を選択して空のGameObjectを作成する
  2. 作成したGameObjectを選択し、Inspectorで「Add Component」から「Audio Source」を追加する
  3. Audio Sourceの「AudioClip」欄に、鳴らしたい音声ファイルをドラッグ&ドロップする
  4. Audio Sourceの「Play On Awake」にチェックが入っていることを確認する
  5. エディタ上部の再生ボタンを押す

以上の設定で、ゲーム開始と同時に設定した音声が再生されます。

方法2:クリックで効果音を鳴らす(コードあり)

スクリプトを使い、マウスの左クリックと右クリックで異なる効果音を鳴らしてみましょう。

手順

  1. Hierarchyで空のGameObjectを作成し、Audio Sourceコンポーネントを追加する
  2. 以下のC#スクリプトを作成し、作成したGameObjectにアタッチする
  3. Inspectorでスクリプトの「Sound 01」「Sound 02」の各フィールドに、鳴らしたい音声ファイルを設定する
  4. ゲームを再生し、左クリックおよび右クリックでそれぞれ音が鳴ることを確認する

スクリプト

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()は、効果音などのワンショット再生に適したAudioSourceのメソッドです。

特徴

  • 音声を1回だけ再生する
  • 同じAudioSource上で再生中の音を途切れさせず、音を重ねて再生できる
  • 音量を第2引数のscaleVolumeByで調整できる

csharp

// 音量70%で再生する例
audioSource.PlayOneShot(sound01, 0.7f);

注意点として、短時間に大量の音をPlayOneShotで同時に鳴らすと処理負荷が増加します。

連射時の効果音などは同時再生数や再生間隔に注意しましょう。

よくあるエラーと対処法

症状原因と対処
音が鳴らないAudioListenerがシーン内に存在するか確認する。カメラを削除していると消えている場合がある
エラー「AudioSource is missing」GameObjectにAudioSourceコンポーネントがアタッチされていない
音が小さい・聞こえないAudioSourceのVolume設定やAudioListenerの配置位置・音量設定を確認する

Unityに関するほかの記事は、以下のリンクからご覧いただけます。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

Unityの基礎と学習の記事は、ほかにもあります。

まとめ

  • 効果音にはWAV、BGMにはMP3やOGGが適している
  • 音を鳴らすにはAudioSourceコンポーネントが必要となる
  • PlayOneShot()を使用すると、同一AudioSource上で効果音を重ねて再生できる

まずは簡単な効果音の再生から試して、Unityで音を鳴らす基本操作を確認してみましょう。

よくある質問:UnityのAudioSource.PlayOneShotで効果音を鳴らす

Unityで効果音を鳴らすには、何が必要ですか?

音声データのAudioClip、再生役のAudioSource、音を聞く役のAudioListenerの3つです。AudioListenerは初期状態のMain Cameraに設定されており、シーン内に1つだけ配置します。

効果音とBGMでは、どの音声形式を選べばよいですか?

再生時間が短い効果音にはWAV形式、再生時間が長いBGMにはMP3形式またはOGG形式を選ぶのが標準的としています。WAV/AIFFは無圧縮で高音質ですがファイルサイズが大きく、MP3/OGGは圧縮形式でファイルサイズが小さい代わりに、わずかに音質が劣化する場合があります。

コードを書かずに音を鳴らす方法はありますか?

あります。空のGameObjectを作成してAudio Sourceコンポーネントを追加し、AudioClip欄に音声ファイルをドラッグ&ドロップします。Play On Awakeにチェックが入っていることを確認して再生すると、ゲーム開始と同時に音が鳴ります。

PlayOneShotとは何ですか?

AudioSourceのメソッドで、効果音などのワンショット再生に向いています。音声を1回だけ再生し、同じAudioSource上で再生中の音を途切れさせずに、音を重ねて再生できます。音量は第2引数のscaleVolumeByで調整できます。

短時間に効果音を何度も鳴らしても大丈夫ですか?

短時間に大量の音をPlayOneShotで同時に鳴らすと、処理負荷が増加します。連射時の効果音などは、同時再生数や再生間隔に注意してください。

音が鳴らないときは、何を確認すればよいですか?

まず、AudioListenerがシーン内に存在するか確認します。カメラを削除していると消えている場合があります。「AudioSource is missing」のエラーが出る場合は、GameObjectにAudioSourceコンポーネントがアタッチされていないことが原因です。

音が小さい、または聞こえないときはどうしますか?

AudioSourceのVolume設定と、AudioListenerの配置位置・音量設定を確認します。

記事のスクリプトは、そのままどんな環境でも動きますか?

記事のサンプルは、マウスの左クリックと右クリックで別の効果音を鳴らす例で、Input.GetMouseButtonUpを使っています。プロジェクトの入力設定やUnityのバージョンによって使える入力APIは異なるため、動かないときは公式マニュアルで最新の仕様を確認してください。本回のリライトでは、Unityでの実行確認は行っていません。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次