[Unity]NGUIとADX2 LEを連動させる

どもです。
えるいー便り第一稿は、「ADX2 LE」をUnityで便利に使うためのTIPSシリーズ!

今回はUnity の人気アセット「NGUI」との連動実験をご紹介します。

「NGUI」はもはや説明不要なUnity向けGUI構築プラグインですが、NGUIは「ボタンを押したときに音を鳴らす」処理に、専用スクリプトUIPlaySound.csを用意しています。
このスクリプトをボタンのオブジェクトに付けして、AudioClipを関連付けると音が鳴る仕組みです。

NGUI:UIPlaySound Class Reference

内部では、ヘルパークラスNGUITools.csのPlaySound 関数を呼んでいて、ここからAudioSourceの生成と指定のAudioClipの再生を行っているようです。

そこで、ボタン音再生部分を、「ADX2LE」で鳴らすように差し替えるスクリプトを用意しました。
UIまわりのオーディオデータも、「ADX2 LE」をつかってガッツリ減らしましょう!

UIPlayAtom.cs

NGUIのバージョンは3.6.8を使用しています。
なお、上記スクリプトは、残念ながら単体では動作しません。UIPlaySound.csに内容を足して使います。
(そのまま動作するスクリプトを用意したかったのですが、NGUI由来のスクリプトは公開できませんので、新しく作った部分のみ抽出しました。)

手順は以下です。

0.通常手順で「ADX2 LE」プラグインを導入、CRI Atom Craftからキューシートバイナリを出力してUnityのCRI Atom Windowにキュー一覧が出ている状態から

1.UIPlaySound.csをコピーして適当にリネーム、クラス名も同一に。(例ではUIPlayAtom)
2.上記のプロパティ全部と、Awake()とPlayCue ()関数をクラスに追加
3.もとのスクリプトで”NGUITools.PlaySound();”を呼んでいる部分(4箇所)を、”PlayCue()”; に置き換える
4.AudioClipのpublicプロパティは必要なくなるので削除
5.ADX2LEではPitchの値が0~2から-1200~1200になるので、pitchプロパティのRange設定を
[Range(0f, 2f)] から[Range(-1200f, 1200f)] に差し替える。

このスクリプトをボタンにしたスプライトに着けて、
あとは、作成したキューの名前を指定すれば音が鳴ります。

nguiadx2le1

↑SpriteにBox Collider、UIButtonと今回作成したUIPlayAtomコンポーネントを付けた状態。
cueNameに鳴らしたいキュー名、cueSheetにキューシート名を指定。

もとのヘルパークラスNGUIToolでは、初回再生時にstaticなAudioSourceを生成している
(Hierarchy上ではMainCameraのオブジェクトにコンポーネントがつく)ので、同じ仕様にしています。

もともとは自分用に用意した稚拙なコードですので、
「もっと効率的な方法があるよ」みたいなご意見がありましたら、ぜひ。

ではでは。