Version: 2019.3
イベントタイプリファレンス
バインディング

ビルトインコントロール

UIElements には以下の標準コントロールが組み込まれています。

  • ボタン
  • コンテキストメニュー
  • エディターテキストフィールド
  • ラベル
  • スクロールビュー
  • テキストフィールド
  • トグルボタン

コンテキストメニュー

コンテキストメニューは、コンテキストに応じてユーザーに一群の選択肢やアクションを表示します。このコンテキストは何でも参照でき、通常は現在の選択を表示します。

コンテキストメニューを使用可能にする

コンテキストメニューを使用可能にするには、ContextualMenuManipulator をビジュアル要素にアタッチします。このマニピュレーターは、右ボタンの Mouse Up イベントかメニューの Key Up イベントのいずれかの後にコンテキストメニューを表示します。ContextualMenuManipulator マニピュレーターは ContextualMenuPopulateEvent に応答するコールバックも追加します。以下のコードサンプルはその例です。

void InstallManipulator(VisualElement element)
{
    ContextualMenuManipulator m = new ContextualMenuManipulator(MyDelegate);
    m.target = element;
}

void MyDelegate(ContextualMenuPopulateEvent event)
{
    // event.menu を変更
    event.menu.AppendAction("Properties", DisplayProperties, DropdownMenu.MenuAction.AlwaysEnabled);
}

void DisplayProperties(DropdownMenu.MenuAction menuItem)
{
    // ...
}

ContextualMenuManipulator コンストラクターに渡されるコールバックは最後に呼び出されるので、子要素をメニューに含むことができます。

内部的に、マニピュレーターは、伝播パスに沿って、ターゲット要素階層に伝播される ContextualMenuPopulateEvent イベントを送信します。つまり、ビジュアルツリーのルートからイベントターゲットに、次にビジュアルツリーをルートにバックアップします。伝播パスに沿って、 ContextualMenuPopulateEvent イベントのコールバックを持つ要素は、コンテキストメニューの項目を追加、削除、または変更できます。

ユーザーの選択に応答する

要素が ContextualMenuPopulateEvent を受け取ると、DropdownMenu.InsertAction()DropdownMenu.AppendAction() のいずれかを呼び出すことによって、メニュー項目をコンテキストメニューに加えます。

これらの関数はそれぞれ、パラメーターとして 2 つのコールバックをとります。最初のコールバックは、ユーザーがメニューの項目を選択したときに実行されます。2 番目のコールバックはメニューを表示する前に実行され、メニュー項目が有効かどうかをチェックします。

それらのコールバックは両方とも MenuAction をパラメーターとして受け取ります。MenuAction はメニュー項目を表し、以下のような便利なプロパティーを持ちます。

  • MenuAction.userData には、AppendAction()InsertAction() によって使用された可能性のあるユーザーデータへの参照が含まれます。
  • MenuAction.eventInfo には、コンテキストメニューの表示をトリガーしたイベントに関する情報が含まれます。イベントへ応答するアクションの MenuAction.eventInfoを使用してください。例えば、マウスの位置を使用して、選択したコンテキストメニュー項目に基づいて、オブジェクトを作成し配置することができます。

  • 2018–11–02 Page amended
イベントタイプリファレンス
バインディング
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961