Radiant UI/Context Menu

Last-modified: 2025-05-06 (火) 14:01:20


コンポーネント

  1. ContextMenu
  2. ContextMenuItem

  3. ContextMenuItemSource
  4. ContextMenuSubmenu
  5. RootContextMenuItem


カスタムコンテキストメニューの作り方

コンテキストメニューの表示方法は2種類あります。(通常はどちらかの手法を使用します。)

  1. アバター等に設定する場合
    RootContextMenuItemコンポーネントを使用します。
    もっと見る
    1. アバター内に新規スロットを作成。
    2. そのスロットに、RootContextMenuItemContextMenuItemSourceをアタッチ。
    3. RootContextMenuItemのItem欄に、ContextMenuItemSourceを指定。
    4. ContextMenuItemSourceのLabel・Color・Spriteを設定。
      それぞれ適当に設定してください。(Sprite画像は無くても問題ありません。)

    以上でカスタムコンテキストメニューができました!

    そのアバターを着て試してみましょう。
    Tキー又はBボタン等を押すと、コンテキストメニューが開きます。そこに、今作ったカスタムメニュー(ボタン)が追加されているはずです。
    ※RootContextMenuItemを増やし過ぎちゃうと、コンテキストメニューが細くなって操作しずらくなってしまいます。ほどほどの数に留めておきましょう。

    ここで作ったのは、あくまでもボタンだけです。次は、このボタンを押した時の動作を設定しましょう。

  2. アイテム等に設定する場合。
    ボタン系コンポーネント(TouchButton等)を使用します。
    RootContextMenuItemの替わりにボタンを使用するだけです。


次の階層を開く場合はContextMenuSubmenuを使用します。

サブメニューの作り方を見る

(この作り方はあくまでも一例です。)

  1. ContextMenuItemSourceと同じスロットに、ContextMenuSubmenuをアタッチ。
  2. ContextMenuSubmenuのItemsRoot欄に、自スロットを指定。
  3. 子スロットを新規作成。
  4. 新規作成したスロットに、ContextMenuItemSourceをアタッチ。
  5. ContextMenuItemSourceのLabel・Color・Spriteを設定。

以上でカスタムコンテキストサブメニューができました!

メニュー(ボタン)の数を増やす場合は、手順3~5を繰り返してください。
表示される順番はスロットの順番と同じです。(スロットの順番は、OrderOffset値で並べ替えできます。)

ItemsRoot欄は、当然ながら他スロットを指定する事ができます。
工夫すれば、次のサブメニュー階層を表示したり、前のサブメニュー階層を表示したりできます。


値の書込みや、トグルボタン等を作る場合。

ContextMenuItemSourceはボタン系なので、Button Interactionsと組合わせることが可能です。


メニュー(ボタン)の見た目を連動させる場合。

例えば、トグルボタン(On/Off)のラベルや色等を連動させたい場合、ContextMenuItemSourceのLabel・Color・Spriteを、状態に応じて切替える必要があります。
そんな時は、ValueOptionDescriptionDriver等が便利です。



閑話

がんばれ
コンテキストメニューの制作は少々手間が掛りますが、最初に作ってしまえば次回からは複製して改造するだけです。
多くのアイテムが共有されているので、リバースエンジニアリングすると勉強になります。(先人に感謝です。)
どうしてもわからない場合は、フレンドやメンターさんに素直に聞いてみましょう。

ContextMenuとContextMenuItemコンポーネントについて
この二つはコンテキストメニューの内部処理に関わるコンポーネントです。
おそらくユーザーが使用する事は無いので、ここでの解説は行いません。

ロストテクノロジー
Resonite紀元前よりも昔の話になりますが、当時カスタムコンテキストメニューを作るのは非常に困難でした。しかし、アップデートによってContextMenuItemSource等がもたらされ、容易に作る事ができるようになりました。
その為、ContextMenuItemSource等を使用せずにカスタムコンテキストメニューを実装する技術はロストテクノロジーになりつつあります。

スライダー
コンテキストメニューはボタン(押す)操作しかできなさそうですが、実はドラッグ操作も可能です。
Fluxも活用すれば、スライダー(無段階のボリューム調整等)を実装できます。

俗称
日本でのコンテキストメニューの俗称をいくつかご紹介します。
「コンテクストメニュー」・・・カタカナ発音の違い。(伝わればOK)
「ラジアルメニュー」・・・古代人かも!?
「丸いメニュー」「リングメニュー」・・・初心者さんを案内する時に使いがち。