ClickEvent (クリックイベント) は、ユーザーが VisualElement の上でマウスの左ボタン (またはポインティングデバイスの第一ボタン) をクリックすると発生します。
クリックは、同じ VisualElement 上でポインターを押下するイベントと、それに続いてポインターが上がるイベントから構成されます。ポインターの押下と上昇のイベントが同じ VisualElement 上で発生する限り、ポインターは 2 つのイベント間を移動することが可能です。
このイベントは、ボタン以外のビジュアル要素のクリックを検出するために使用できます。例えば、 Toggle
コントロールの実装では、ClickEvent
を使用してチェックマークを表示または非表示にしたり、コントロールの値を変更したりします。
ClickEvent
の基本クラスは、PointerEventBase です。より詳細な情報は、Pointer Events のドキュメントも参照してください。
イベント | 説明 | 下降伝播 | 上昇伝播 | キャンセル可能 |
---|---|---|---|---|
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 に反応する方法を示しています。要素がクリックされると、その色は新しい、ランダムな色に変わります。
この例の動作を実際に見るには、以下を行います。
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));
}
}