Ink

Contents related to tech, hobby, etc

XR Interaction Toolkit からuGUIイベントに反応する

|

XR Interaction Toolkit からuGUIイベントに反応する

uGUI上に表示した文字列へのイベントを取りたかったです。最初は Interactable として扱うのかなと色々試しましたが、実際の所マウスイベン トとして扱ってよいということがわかりました。

Tl;Dr

やること

XR Interaction Toolkit 対応のCanvasを作成する

XR Interaction Toolkitを導入している状態であれば、ヒエラルキービューか ら XR>UI Canvas で作成することが出来ます。

EventSystemが作成されない場合は、同様に XR>UI EventSystem を追加して ください。

(おまけ) 任意のイベントを受け取るためには EventTrigger を追加する

ボタン等は OnClick イベントを受け取ることが出来ますが、それ以外のコ ンポーネント(TMPro.TextMeshProUGUIなど)でも受け取りたい場合、 EventTriggerを使用出来ます。

uGUI上でコントローラーのトリガー入力を受け取りたい場合はPointerClickを 使用出来ます。コールバックはPointerEventData型の引数を取りますが、実際 に EventTrigger に設定する際はBaseEventData型の引数を受け取って自分 でキャストする必要があります。

具体的には以下のような形となるかと思います。参考までに TextObjectsVRでの具体的な使用例も置いておきます。

public void pointerClick(BaseEventData d) {
    var pointerEv = d as PointerEventData;
    if (pointerEv == null) {
        return;
    }

    // イベントに対応するスクリプト
    // ...
}