LemonteaのUnity部屋

LemonteaのUnity部屋

Unityの使い方とかです~

初めてのスクリプト(9) BGM・効果音の再生

こんにちは。レモンティーです。

今回は、BGMとSEについてです。

これらはAudioSourceコンポーネントというのをつかって再生します。

ですが、ずっと鳴ってる一曲のBGMで良い場合と、
任意のタイミングで鳴らしたい場合で
楽な手順が違う(やってることは同じ)ので、
それぞれA、Bにわけて説明します。
最後に、Bでボタンを押すと再生するという例を書きます。


A ずっと鳴ってる一曲でかまわない時

やることは

①AudioSourceコンポーネントをつける
②↑の設定
③もしなければAudioListenerコンポーネントをつける

です。

①AudioSourceコンポーネントをつける

シーン内の適当なオブジェクトにAudioSourceコンポーネントをつけます。
AddComponent>Audio>AudioSourceです
f:id:sawalemontea:20170911180621p:plain

こんなのがでます
f:id:sawalemontea:20170911180705p:plain

ちなみに、Create>Audio>AudioSourceでもOKです。

これが音源になります。

②AudioSourceコンポーネントの設定

では設定していきます。

まず、一番上のAudio Clipのところに
再生したいファイルを入れます。
現時点では
mp3 ogg wav aiff  aif
mod it s3m xm
が再生できるようです。

次に、Play On AwakeとLoopにチェックをいれます。

これで鳴りっぱなしのBGMはOKです


…とはいったものの、先ほど設定したのは音源です。
それを聞くためには、耳がないといけません

この役割をはたすのがAudio Listenerです。

これはメインカメラにはじめからついているので
普通はわざわざなにかする必要はないですが、無かったらつけましょう。

AddComponent>Audio>AudioListener です。



B 任意のタイミングで鳴らしたいとき

やることは

①AudioSourceコンポーネントをつける
スクリプトを書く
③インスペクターで設定

です

①は、Aの①と同じなので省きます。
なにも設定はしなくていいので付けるだけでOKです。



スクリプトを書きます。

必要なのは、

AudioSourceとAudioClipの変数
AudioSourceコンポーネントの取得
再生する処理

です。
再生以外を書くとこんな感じとかです

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

public class BGMandSE : MonoBehaviour {

    public AudioSource AS;
    public AudioClip A, B, C;

	void Start () {
        AS = GetComponent<AudioSource>();
        
	}	
}

これであとは任意の位置で

AS.PlayOneShot(B);

のように書くと引数のクリップが再生されます。





あとは、publicで宣言したAudioSourceとAudioClipを設定します。
インスペクターにはめるだけです
f:id:sawalemontea:20170911183755p:plain

これでBの手順はおしまいです。



それでは最後にボタンを押すと再生するようにしてみましょう。
まずスクリプトをかきます。

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

public class BGMandSE : MonoBehaviour {
    public AudioSource AS;
    public AudioClip A, B;
	void Start () {
        AS = GetComponent<AudioSource>();
    }
    public void OnClick()
    {
        AS.PlayOneShot(A);
    }
    public void OnClick2()
    {
        AS.PlayOneShot(B);
    }
}

次に、UIのButtonをつくり
ボタンのButtonコンポーネントのOnClick()を設定します
f:id:sawalemontea:20170911184220p:plain
↑を押して…
f:id:sawalemontea:20170911184335p:plain
設定。

f:id:sawalemontea:20170911184513p:plain
意味は、ボタンが押されたとき
どのオブジェクトの、どのメッソドを呼び出すか、です。

赤丸がオブジェクト、青丸がメッソドです。


これを二つのボタンに行えば、
ボタン1をおすとA、ボタン2を押すとBの音声が再生されます。


今回はこれでおしまいです。

Audio関連
sawalemounity.hatenablog.com
sawalemounity.hatenablog.com

前回
sawalemounity.hatenablog.com

初回
sawalemounity.hatenablog.com