arketブログ

arket(アルケット)のblogです。 色々作ります。

unityのスクリプトで音声の切り替えをする方法

備忘用にスクリプトから音声を切り替える方法を記載。
武器を切り替えた際に攻撃音を変えたりする時等に・・・
ちと殴り書き気味なので後で追記修正あるかもです。
Unity ScriptReference 参考:AudioSource


1.はじめにゲーム内のcameraオブジェクトを選択。
選択した状態でメニューのComponent→Audio→Audio Sourceを選択。
InspectorでAudio Sourceが追加された事を確認する。



2.音声を再生するスクリプトを作成。
ここでは攻撃ボタン(Fire1)が押された時に効果音が再生されるようにしている。


function Update()
{
if (Input.GetButton("Fire1")){
//音の再生
audio.Play();
}
}

作成後に同スクリプトをcameraオブジェクトに追加する。



3.InspectorのAudio Sourceに戻って、Audio Clipに再生したい音声ファイルを追加する。
追加後、一度テストプレイで効果音が再生される事を確認する。



4.手順2で作成したスクリプトにAudio Clip操作用の以下を追記。


//デフォルトの効果音
var handGunSound: AudioClip;
//変更したい効果音
var RifleSound: AudioClip;

function Update()
{
if (Input.GetButton("Fire1")){
//音の再生
audio.Play();
}

if(Input.GetKey(KeyCode.G)){
//Gキーが押された時、効果音を変更する。
audio.clip = RifleSound;
}
}


cameraオブジェクトに追加したスクリプトをInspectorで確認し、AudioClip選択項が表示された事を確認。



5.手順4で表示されるようになったInspectorのAudioClipに再生したい音声ファイルをそれぞれ追加する。



6.テストプレイでデフォルトの効果音、Gキーが押された後の効果音の変化を確認する。


以上です。



2012/02/11 追記
攻撃の効果音のような場合は、PlayOneShot()を使うほうが楽そうです…
上記のAudio Clipを変えるやり方は環境音的な延々と再生され続ける場合に使う方がよさそうです。