Version: 2023.1
言語: 日本語
変更イベント
コマンドイベント

クリックイベント

ClickEvent (クリックイベント) は、ユーザーが VisualElement の上でマウスの左ボタン (またはポインティングデバイスの第一ボタン) をクリックすると発生します。

クリックは、同じ VisualElement 上でポインターを押下するイベントと、それに続いてポインターが上がるイベントから構成されます。ポインターの押下と上昇のイベントが同じ VisualElement 上で発生する限り、ポインターは 2 つのイベント間を移動することが可能です。

このイベントは、ボタン以外のビジュアル要素のクリックを検出するために使用できます。例えば、 Toggle コントロールの実装では、ClickEvent を使用してチェックマークを表示または非表示にしたり、コントロールの値を変更したりします。

ClickEvent の基本クラスは、PointerEventBase です。より詳細な情報は、Pointer Events のドキュメントも参照してください。

イベント 説明  下降伝播 上昇伝播 キャンセル可能
ClickEvent マウスの左ボタンがクリックされると発生します。

固有のプロパティ

ClickEvent は固有のプロパティを持たず、すべてのプロパティを基本クラスから継承します。プロパティの一覧は、ポインターイベント ページを参照してください。

イベントリスト

ClickEvent

Unity は、マウスの左ボタンがビジュアル要素上でクリックされると、このイベントを送信します。

ターゲット: クリックが発生したときにマウスまたはポインティングデバイスの下にある要素。

以下の例では、ビジュアル要素の ClickEvent を登録します。

btnClose.RegisterCallback<ClickEvent, VisualElement>(Clicked, asset); // asset is the root visual element that will be closed

private void Clicked(ClickEvent evt, VisualElement root)
{
  root.ShowVisualElement(false); 
}

次の例は、色付きのビジュアル要素の ClickEvent に反応する方法を示しています。要素がクリックされると、その色は新しい、ランダムな色に変わります。

この例の動作を実際に見るには、以下を行います。

  1. ClickEventExampleWindow という名前の新しい C# スクリプトを作成します。
  2. サンプルコードを C# スクリプトにコピーします。
  3. Window > UI Toolkit > Click Event Example と移動し、新しくエディターウィンドウを開きます。
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

public class ClickEventExampleWindow : EditorWindow
{
  [MenuItem("Window/UI Toolkit/ClickEventExample")]
  public static void ShowExample()
  {
    var wnd = GetWindow<ClickEventExampleWindow>();
    wnd.titleContent = new GUIContent("Click Event Example");
  }

  public void CreateGUI()
  {
    // Create a few different colored boxes
    for (int i = 0; i < 4; i++)
    {
      // Create VisualElement with random background color
      var newBox = new VisualElement() { style = { flexGrow = 1, backgroundColor = GetRandomColor() } };
      rootVisualElement.Add(newBox);

      // Register a click event to the visual element to change the background color to a new color
      newBox.RegisterCallback<ClickEvent>(OnBoxClicked);
    }
  }

  private void OnBoxClicked(ClickEvent evt)
  {
    // Only perform this action at the target, not in a parent
    if (evt.propagationPhase != PropagationPhase.AtTarget)
      return;

    // Assign a random new color
    var targetBox = evt.target as VisualElement;
    targetBox.style.backgroundColor = GetRandomColor();
  }

  private Color GetRandomColor()
  {
    return new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
  }
}
変更イベント
コマンドイベント