個人アプリ開発で月収5万円目指す

個人アプリ開発で月収入5万円目指す

「定年後の収入に不安を感じる30代会社員」のリアル成長記録

【Unity】サウンドの基本 AudioClip AudioSource AudioListener

環境

Unity 2019.3.7f1

はじめに

サウンドを再生したことはあるけど、
再生方法がいくつかあって、いまいち手順がまとまっていないためメモ

サウンドの基本

音を鳴らすには次の3つが必要です。
・AudioClip
 CDみたいなもの 自分でファイルを用意する。
  再生できる形式はaif、wav、mp3、oggです。
・AudioSource
 CDプレイヤーみたいなもの このコンポーネントをオブジェクトに付ける必要有り。
・AudioListener
 スピーカーみたいなもの MainCameraにこのコンポーネントが勝手についている。
  一つのシーンに2つ以上つけると警告がでる。

音の再生方法

音の再生方法は大きく分けて次の2種類
・AudioSourceにAudioClipを紐づけして再生

スクリプトから再生
  -Playメソッド
   BGM再生(重ねて再生×)
 
  -PlayOneShotメソッド
   SE再生(重ねて再生〇)
 
  -UnPauseメソッド
     一時停止を解除

音の停止方法

 スクリプトから停止
  -Stopメソッド
   CDプレイヤーでいう■ボタン 再度再生すると最初からの再生になる。

  -Pauseメソッド
    一時停止する

具体例

音の再生方法

・AudioSourceにAudioClipを紐づけして再生

AudioSourceコンポーネントを適当なオブジェクトに付けて
・オーディオクリップに音楽ファイルをアタッチ
・ゲーム開始時に再生にチェック
を行い実行することで再生できます。
image.png

スクリプトから再生

Playメソッド、PlayOneShotメソッドを使用するために
以下の前準備を行います。

前準備
・空のゲームオブジェクトを作成
・新規スクリプトを作成
・作成した空のオブジェクトに次の2つを割り当て
 AudioSourceコンポーネント
 作成した新規スクリプト
・AudioSourceコンポーネント設定
 「ゲーム開始時に再生」のチェックを外しておく

image.png

Playメソッド

主な用途はBGM再生です。
複数の音を重ねて再生できません。

では、Playメソッドを使って音を再生してみます。


まず、スクリプトをこのように書きます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test4 : MonoBehaviour
{
    [SerializeField] private AudioSource a;//AudioSource型の変数aを宣言

    void Start()
    {
        a.Play();//AudioSource型が入っている変数aを再生
    }
}

[SerializeField]についての説明はこちら↓
marumaro7.hatenablog.com

次にインスペクター画面で
・AudioSourceを変数aにアタッチ
・再生したい音楽ファイル (AudioClip) 割り当て
  image.png

実行すると音が再生されます。

 

PlayOneShotメソッド

こちらは複数の音を重ねて再生できますが、ちょっと手間が増えます。

スクリプトはこちらにします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test4 : MonoBehaviour
{
    [SerializeField] private AudioSource a;//AudioSource型の変数aを宣言
    [SerializeField] private AudioClip b;//AudioClip型の変数bを宣言

    void Start()
    {
        a.PlayOneShot(b);//AudioClip型の変数bを引数として、AudioSource型が入っている変数aを再生 
    }
}



変数aにAudioSourceをアタッチ
変数bに再生したいAudioClipをアタッチします。
image.png
実行することで音が再生されます。

 

UnPauseメソッド

一時停止を解除する
Pauseメソッドの具体例の項目で一緒に説明します。

 

音の停止方法

スクリプトから停止

音の停止、一時停止はPlayメソッドや「ゲーム開始時に再生」にて音が再生されている状態で使います。
   

Stopメソッド

ボタンに自作の関数を割り当てて使うコードです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test4 : MonoBehaviour
{
    [SerializeField] private AudioSource a;//AudioSource型の変数aを宣言 再生するAudioSourceをアタッチ必要
   
    void Start()
    {        
    }

    //ボタンに割り当てる自作の関数
    public void PushButton()
    {
        a.Stop();//AudioSource型が入っている変数aを停止 
    }
}



新規でボタンを作成し、Buttonコンポーネントでこのように関数を割り当てることで使います。
image.png
再生している状態でボタンを押せば音が停止します。

 

Pauseメソッド

PauseメソッドとUnPauseメソッドのボタンを作り
一時停止・一時停止解除ができるようにします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test4 : MonoBehaviour
{
    [SerializeField] private AudioSource a;//AudioSource型の変数aを宣言 再生するAudioSourceをアタッチ必要
   
    void Start()
    {        
    }

    //ボタン1つ目に割り当てる自作の関数
    public void PushButtonPause()
    {
        a.Pause();//AudioSource型が入っている変数aを一時停止 
    }

    //ボタン2つ目に割り当てる自作の関数
    public void PushButtonUnPause()
    {
        a.UnPause();//AudioSource型が入っている変数aを一時停止解除 
    }

}

2つのボタンに自作の関数をそれぞれ割り当てることで
一時停止と一時停止解除を行うことができます。



応用記事

marumaro7.hatenablog.com

marumaro7.hatenablog.com