【Unity】UI ToolkitのMouseDown・MouseUpの最小実装
【Unity】UI ToolkitをランタイムUIとして使ってみるに引き続き、
Unityの次世代UIシステムにあたるUI Toolkitについて調査していきます。
あくまでランタイムUIとして使う想定の検証です。
今回作るもの
環境
- Unity2020.2.0f1
- UI Toolkit 1.0.0-Preview.13
PointerDownEventとPointerUpEventを使う
MouseDown・MouseUpに反応するVisualElementに対してイベントを登録(RegisterCallback)していきます。
uxmlファイルから見ていきます。
<ui:UXML xmlns:ui="UnityEngine.UIElements" editor-extension-mode="False">
<ui:VisualElement name="container" style="height: 100%; width: 100%; background-color: rgba(255, 252, 0, 255);" />
</ui:UXML>
container
という名前のVisualElement
が1つだけ全画面に配置してあるシンプルな構成です。
C#側からVisualElementにイベント登録
C#のソースコードです。
// _documentはUIDocumentのこと
var visualTree = _document.rootVisualElement;
// VisualElement : "conainer"をvisualTreeから検索して取得
VisualElement container = visualTree.Q("container");
// イベント登録
container.RegisterCallback<PointerDownEvent>(OnPointerDown);
container.RegisterCallback<PointerUpEvent>(OnPointerUp);
VisualElement
であるcontainerを取得して、RegisterCallback
メソッドでイベントを登録しています。
コールバック先でイベントターゲットのVisualElementを取得する
// MouseUpしたら色を赤色にする
private void OnPointerDown(PointerDownEvent evt)
{
var ve = (VisualElement) evt.target;
ve.style.backgroundColor = Color.red;
}
// MouseUpしたら色を黄色にする
private void OnPointerUp(PointerUpEvent evt)
{
var ve = (VisualElement) evt.target;
ve.style.backgroundColor = Color.yellow;
}
ポイントは(VisualElement) evt.target
の部分でVisualElementにキャストしているところでしょうか。公式サンプルがこうなってるので、それにならった形を取りました。
EventSystem(UI Toolkit)が必ず必要
「イベントが通知されないな〜??」
と思った時はEventSystemがシーンに配置してあるかチェックしてみましょう。
必ずシーンに1つ必要です。
最後に
以上UI ToolkitにおけるMouseDown・MouseUpの最小実装でした。
ソースコード全文はGistにアップしています。
Author And Source
この問題について(【Unity】UI ToolkitのMouseDown・MouseUpの最小実装), 我々は、より多くの情報をここで見つけました https://qiita.com/ohbashunsuke/items/ae1da96e582aef734eee著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .