ティラノスクリプト:BGMや効果音の管理に連想配列をつかう
ゲームには欠かせない要素であるBGMや効果音ですが
使用する数が増えてくると管理が大変になってきます。
とくに複数の素材サイトさんからお借りする場合
サイトによってファイル名の長さに大きな差があったり
ファイル名からどのような音楽か判別がむずかしかったり
使用するときに少し手間がかかってしまうことがあります。
ファイルをリネームしてしまえば問題は解決するのですが
これはこれで「ファイルをひとつずつリネームする手間」と
「どのサイトからどの曲を借りたかを管理する手間」が増えます。
そこで、使用するBGMや効果音をリスト化して
使い勝手を良くしようというのが今回のお題です。
リストには連想配列を使用します。
連想配列とは
配列の仲間ですが添字(インデックス)にキーを指定できるのが特徴です。
たとえば f.bgmList という連想配列を作ったとします。
普通の配列の場合は
f.bgmList[0] = "music001.ogg";
f.bgmList[1] = "happy.ogg";
もしくは
f.bgmList = ["music001.ogg", "happy.ogg"];
と書きますが、連想配列は
f.bgmList["normal"] = "music001.ogg";
f.bgmList["happy"] = "happy.ogg";
もしくは
f.bgmList = {
"normal": "music001.ogg",
"happy": "happy.ogg"
};
と書きます。この"normal"や"happy"を《キー》と呼びます。
キーにアクセスするには以下のように書きます。
var value = f.bgmList["normal"];
var value = f.bgmList.normal;
console.log(value); // コンソールには「music001.ogg」と表示される
もっと詳しく知りたい人は「JavaScript 連想配列」でググってね。
それでは、これを使って実際にBGMリストを作ってみましょう。
BGMのリストを作る
たとえば下記のようなBGMの設定を考えたとします。
左側がBGMを使うシーン、右側が再生するファイル名です。
通常時 :music001.ogg
楽しい時:candymusic.ogg
悲しい時:bgmfile_003.ogg
イベント:event_loop_110.ogg
ED曲 :fantasy_theme.ogg
これを連想配列にしていきます。
f.bgmList = {
"normal": "music001.ogg",
"happy": "happy.ogg",
"sad": "bgmfile_003.ogg",
"event": "event_loop_110.ogg",
"ending": "ending_theme.ogg"
};
ついでに効果音リストも作っておきます。
書きかたはBGMリストと同じです。
f.seList = {
"enter":"button001.ogg",
"click":"effect_paternA_005.ogg",
"effect":"sound111.ogg"
};
おまけで効果音用のバッファ指定もリスト化。>
f.bufList = {
"enter":"0",
"click":"1",
"effect":"2"
};
キーの名前をややこしくすると本末転倒になってしまうので
ひと目で用途が分かるような名前にしておきましょう。
ティラノスクリプトで使ってみる
BGMを再生するときは以下のように記述します。
[playbgm storage="&f.bgmList.normal"]
これを実行すると連想配列 f.bgmList のキー《normal》に格納されている「music001.ogg」が再生されます。
効果音を再生するときも同じように書きます。
[button graphic="img.png" enterse="&f.seList.enter" clickse="&f.seList.click"]
ホバー時に button001.ogg が再生され、クリック時に effect_paternA_005.ogg が再生されます。
もちろんマクロにしても問題ありません。
[macro name="通常BGM再生"]
[playbgm storage="&f.bgmList.normal"]
[endmacro]
; バッファ番号2で「sound111.ogg」を再生
[macro name="エフェクト再生"]
[playse storage="&f.seList.effect" loop="false" buf="&f.bufList.effect"]
[endmacro ]
- 関連記事
-
- ティラノスクリプト:クリック待ちグリフの設定方法 (2018/10/19)
- ティラノスクリプト:システム画面の《戻るボタン》の配置場所を変えるには (2018/10/05)
- ティラノスクリプト:任意のレイヤを塗りつぶすマクロ (2018/08/28)
- ティラノスクリプト:セーブした時間をゼロ埋め表示にする (2018/08/22)
- ティラノスクリプト:プラグインを作ってみよう (2018/08/18)
- ティラノスクリプト:ptextで一部の文字だけに装飾をつける方法 (2018/03/21)
- ティラノスクリプト:BGMや効果音の管理に連想配列をつかう (2017/12/09)
- ティラノスクリプト:レイヤ指定に変数を使用するときの注意 (2017/11/17)
- ティラノスクリプト︰keyframe を使ってカードめくりのアニメーションを作る (2017/03/17)