XR Interaction Toolkit からuGUIイベントに反応する
uGUI上に表示した文字列へのイベントを取りたかったです。最初は Interactable として扱うのかなと色々試しましたが、実際の所マウスイベン トとして扱ってよいということがわかりました。
Tl;Dr
IXRInteractable等の Interactableは 関係ない
UI interaction setup | XR Interaction Toolkit | 2.5.1 に従えばよい
EventTriggerを用いる際は、Rayでの選択は
Pointer Click
として扱える
やること
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;
}
// イベントに対応するスクリプト
// ...
}