こんにちは。黒星ゆうです。
今回は、上記リンク先で紹介されている、「オブジェクトベースのメニュー管理」をおすすめしてみようというやつです。
EXMenuを視覚的に管理できて結構便利なので、ちょっと紹介してみようかなとおもいます。ぽやぽや。
注意:いつも以上にフィーリング感マシマシのぽやぽや解説です。ゆるせ!
オブジェクトベース管理のメリット
先にメリットについて、超さっくりお話します。
- メニューの中身がぱっと見でわかりやすい
- 項目の並び替えやメニューの追加が簡単にできる
- (Modular Avatarのメニュー関連機能を使いやすい)←今回の解説には含んでいません。
HowTo
「Extract Menu」する
大抵の場合、アバターにはEXMenuが入ってると思います。
Desktopなら「R」キー、VRならばYボタンとかBボタンを長押ししたときに出てくる、Radial Menuで「Expressions」を選択したときの中身です。
このExpressionsの中身は、VRC Avatar Descripterの「Expressions」タブの、「Menu」内に入っているものの内容を参照しています。
今回はテスト用のメニューを、しなのちゃんのPrefabに突っ込んでみました。
コレが入っているアバターならば、アバターのルートオブジェクトを右クリックして、「Modular Avatar → Extract Menu」を選択すればデキアガリ!
アバターの中に「Avatar Menu」というオブジェクトが生成されて、Avatar Descripterには新しく生成されたEXMenuが入りました。
新しく生成されたEXMenuの中身はすっからかんです。
このすっからかんのEXMenuに、「Avatar Menu」の中身をツメツメしていく構造ですね。
Avatar Menuのしくみ
事前解説:Test Menuの中身
先にテスト用に用意したメニューの中身を紹介します。
「JITOME」と「Facial Menu」だけ入ってます。普段遣いしてるやつからもってきたのさ!
「JITOME」はジト目にするためのToggleアニメーション。
Facial MenuにはSub Menuを入れていて、目と口の形を固定するギミックをつっこんでいます。
生成された「Avatar Menu」の中身
というわけで、こちらのTest Menuを用いていたアバターに生成された、Avatar Menuの中身を見てみましょう。
「MA Menu Installer」と「MA Menu Group」というコンポーネントがついていますね。
公式HPの解説は以下。
よくわかんねーよ! ってなった方は、だいたいこんなふうに考えておけば幸せに生きていけると思います。
- MA Menu Installer:指定したメニューに以下項目を追加します! と宣言するやつ。
- MA Menu Group:どのオブジェクトが、追加したいメニューの内容なんだい!? と教えてあげるやつ。「引用元オブジェクト」に何も入れないと、直下にあるオブジェクトが参照されます。
画像の内容は、「Avatar Menu」の直下にあるオブジェクトの内容を、TestMenu placeholderというからっぽのメニューに挿入します!! って言っている感じです。
そのオブジェクトの名前をチェックすると、「JITOME」と「Facial Menu」……先ほど確認したTestMenuに入っていた項目と同じ名前です。
ではそれぞれのオブジェクトをチェックしてみましょう。
「JITOME」の中身はこんなかんじ。
今度はMA Menu Itemというコンポーネントがありますね。
要するに、EXMenuに入れたい項目を、MA Menu Itemを使って宣言しているわけです。
「jitome」というparameterを使用する、Toggle型の「JITOME」という項目を入れたいです!! と申しております。
お次は「Facial Menu」の中身です。
先ほどと同様にMA Menu Itemのみ。
今回はサブメニュー引用元に「Facial Menu」が入っており、その中身が以下に記載されています。
TestMenuに入っていたFacial Menuと同じ内容ですね。
このままでもいいのですが、今回は最下部に表示されている「オブジェクトに展開」を選択してみましょう。
サブメニュー引用元が「子オブジェクトから生成」に変更され、Facial Menuの下に「EyeLock」と「MouthLock」というオブジェクトが生成されました。
一応その2つのオブジェクトの画像も掲載しておきますが、先程のJITOMEと似たようなものです。
このように、サブメニューの中身もオブジェクトとして切り出すことができます。
何が良いかって、すべてのメニューの中身をまとめて、視覚的に管理することができるのです。
サブメニューが複数あると、あのメニューの中身はこうで、このメニューの中身はこうで……と、複数のメニューアセットを管理しなきゃいけません。
ものぐさな人にとっては面倒くさいことこの上ありません。ぱっとチェックしたいよ、ぱぱっと!!
というものぐさ人間の壮大なる願望を叶えてくれるのが! この「オブジェクトベースのメニュー管理」ってわけだね!!
衣装についてきたメニューの中身をAvatar Menuに挿入したいとき
MA Menu Installerを活用する
世の中に販売されている衣装の中には、すでに衣装用のメニューを用意してくれているものもあります。親切!
そんな親切なメニューを、このオブジェクトベースのメニューにどうやってぶちこめば良いでしょうか。
→MA Menu Installerをつかいます。
ものすっごく雑なんですけど、しなのちゃんのタイツを衣装と見立てて、「ねこちゃん」とかいうなんの意味があるか微塵もわからないメニューを作りました。
まずはこのままちょっと動作確認してみましょう。
ばちこり雑に作った「ねこちゃん」が入ってますね。
MA Menu Installerで「TestMenu placeholder」を指定していたので、特に問題なく入ってくれました。
この「ねこちゃん」を「Facial Menu」の中に入れたいときには、どうしたらいいでしょうか。
MA Menu Installerで、「Facial Menu」を指定してあげればよいのです。
インストール先に「Facial Menu」を指定すると、その下に「Cloth_tights」という名前のオブジェクトが誕生しました。
コレは「Cloth_tights」からメニューを挿入しているので、名前がそういうことになりました。「ねこちゃん」にはなりません。
中身はこんなかんじ。
今度はMA Menu Install Targetとなっていますね。
要するに、「ここにCloth_tightsで作られているメニューの中身を入れます!!」と宣言してます。多分。
実際に動作確認してみましょう。
先程は最初のメニューに「ねこちゃん」が居たのですが、今度は「Facial Menu」の中に入ってくれました。おさまりがいい!
ということで、MA Menu Installerは、「メニューのどの位置に挿入するか」という指定もできます。
つまり、Avatar Menuのオブジェクトの順番を並べ替えるだけで、そのままメニュー項目の並び替えができます! すげえ!!
まとめ
今回はModular Avatarのオブジェクトベースメニュー管理について、ざっくり解説しました。
メニュー周りはもっといじれる要素が増えているのですが、まずはこのオブジェクトベース管理に触れてみてほしいです。やばやばなんで!
(なんならMAを使った衣装のメニューも、オブジェクトベースになってくれると嬉しいなと思ったりしてますので……)