Unity:UI Elements でマウスのクリックイベントを取得する

最終更新日

はじめに

たっつー(管理人)
たっつー(管理人)

こんにちは、のんびりエンジニアのたっつーです。

今回は「いくつかサンプル書いたよ」の記事の1つのマウスイベントの取得を解説したいと思います。
ぜひ、お付き合いいただければと思います(#^^#)

UI Elementsとは?

こちらの記事をご参照いただければと思います。

マウスイベントの取得方法

通常ではマウスイベントは、Button.Clicked とかのボタンがデフォルト定義してくれているイベントを使いますが、
今回ご紹介するのはもっと汎用的な低レベルな感じの実装になりますので様々なコントロールでマウスの移動・クリックなどのイベントが実装できます。



それでは、マウスイベントの実装をしてみたいと思います。

Editor フォルダを作成し、右クリックのメニューから「UIElements Editor Window」を選択してください。

「Sample3」を入力してください。

次に、Sample3.cs を以下のように変更してください。

using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEditor.UIElements;


public class Sample3 : EditorWindow
{
    [MenuItem("UIElementsSamples/Sample3")]
    public static void ShowExample()
    {
        Sample3 wnd = GetWindow<Sample3>();
        wnd.titleContent = new GUIContent("Sample3");
    }

    public void OnEnable()
    {
        VisualElement root = rootVisualElement;

        root.AddManipulator(new MouseEventLogger());
        root.Add(new Label() { style = { backgroundColor = Color.yellow }, text = "output console log!" });
    }

    class MouseEventLogger : Manipulator
    {
        protected override void RegisterCallbacksOnTarget()
        {
            target.RegisterCallback<MouseUpEvent>(OnMouseUpEvent);
            target.RegisterCallback<MouseDownEvent>(OnMouseDownEvent);
        }

        protected override void UnregisterCallbacksFromTarget()
        {
            target.UnregisterCallback<MouseUpEvent>(OnMouseUpEvent);
            target.UnregisterCallback<MouseDownEvent>(OnMouseDownEvent);
        }

        void OnMouseUpEvent(MouseEventBase<MouseUpEvent> evt)
        {
            Debug.Log("Mouse Up " + evt + " in " + evt.propagationPhase + " for target " + evt.target);
        }

        void OnMouseDownEvent(MouseEventBase<MouseDownEvent> evt)
        {
            Debug.Log("Mouse Down " + evt + " in " + evt.propagationPhase + " for target " + evt.target);
        }
    }
}

動作結果

どうでしたか簡単に実装が行えたと思います。
Unityのメニューから、「UIElementsSamples -> Sample3」を選択して実行を確認してみてください。


次に読んでほしい記事







よければ、SNSにシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする