ベスパリブ

プログラミングを主とした日記・備忘録です。ベスパ持ってないです。

UnityにおけるSEの鳴らし方

本題

スペースキーを押すとSEが鳴るようなスクリプトの実装。

準備

1.Create_Emptyから、空のオブジェクト「Sounds」を作成。
2.「se_01.mp3」という名前の音源ファイルを用意(mp3,wavでも良い)。そのファイルをProjectビューにドラッグアンドドロップするとインポートされる。
3.インポートした「se_01.mp3」をHierarcyビューにドラッグアンドドロップ。AudioSourceコンポーネントを持つインスタンスが作成される(Audio Clipにse_01.mp3がセットされてあることを確認する)。名前を「SE_01」とする。
4.Hierarchyビューの「SE_01」を「Sounds」にドラッグアンドドロップする。構造としては「Sounds/SE_01」となるようにする。

スクリプト

using UnityEngine;
using System.Collections;

public class SoundTest : MonoBehaviour {
	private AudioSource se;
	private GameObject soundObj;

	void Start () {
		soundObj = GameObject.Find("/Sounds/SE_01");
		se = soundObj.GetComponent<AudioSource>();
	}

	void Update () {
		if(Input.GetKeyDown(KeyCode.Space)){
			se.Play();
		}
	}
}

このスクリプトをHierarchyビューの「Sounds」に貼っつける。

説明

soundObj = GameObject.Find("/Sounds/SE_01");
se = soundObj.GetComponent<AudioSource>();

Hierarchyから「Sounds/SE_01」というパスで「SE_01」オブジェクトを探し出し、そのオブジェクトを変数soundObjに代入する。
soundObjのコンポーネントAudioSourceを、変数seに代入する。AudioSourceのAudioClipにはなにか音源(mp3,wav等)をつけておくこと。

if(Input.GetKeyDown(KeyCode.Space)){
	se.Play();
}

スペースキーを押すと、SE_01に設定したSE(se_01.mp3)が鳴る。

SEを重ねて鳴らしたい場合

se.Play();

の部分を、

se.PlayOneShot(se.clip);

に変更するとよい。

注意

デフォルトでは、SE_01は3D Soundに設定されているので、「Audio Listener」がSE_01に遠ければ遠いほど音が小さくなる(デフォルトでは、Main CameraにAudio Listenerが付いている)。