uGUIのButtonはクリックしてマウスを離したときに実行される。
VRのコントローラーだとトリガーを離した瞬間、タップだと手を離した瞬間。
これを押した瞬間にしたい。
対象のUIはマウスやVRでクリック入力するキーボード。配布する予定
普通のuGUIだと気にならないけど、キーボードのようなたくさんボタンを押して次のボタンに行くものは、押した瞬間にしないと、離したときには別のボタンの上にいて入力されないという問題があった。
EventTrigger/PointerDown
これをどうにかするには、uGUIのボタンをデフォルトのイベントを使わずEventTriggerのpinterDownを使えばできる
こんな感じ。デフォルトのOnClickイベントは消す。
ただ個人的に問題があって、たくさんのボタンを一気に変えたいのにMulti-Object editingに対応してない!!!
デフォルトのイベントは、複数のButtonを選択した状態で共通の処理は一気に替えられるのに↓
EventTriggerだとできなかった!!!
30個ぐらいあるのに~~
めんどくせーーー
スクリプトで一気にEventTriggerつける
複数のオブジェクトに一気にEventTriggerを設定します。
基本的にリファレンス通りにできた
青のコメントは私の推測。クリックされたときの処理はラムダで書くんだね。
これでできた!スクリプトで処理するのでオブジェクトに目に見える形でEventTriggerがつくわけではない
VRコントローラーのクリック
今回使うのはコントローラーのTriggerなんだけど、コントローラーの設定で押した瞬間=Clickみたいにできないのかな?
VRTKは設定でできるけど、Oculus IntegratiionとXR Interaction Toolkitは少なくともデフォルトでの設定はできなさそうなので、UIをEventTriggerに変えるほうが配布するときは親切だと思いました。
マウスでクリックする際も設定変えられないと思うし。
VRTK
VRTKだと設定でできる。
コントローラーにつけるVRTK_UIPointerのClickMethodを「Click On Button Down」にすればいい。
Oculus Integratiion
分からない
OculusIntegrationはUIHelper>EventSystemについているOVRInputModuleのJoyPadClickButtonで入力を変えられるけど、TriggerDownみたいなのはない。
XR Interaction Toolkit
わからん!
HandControllerについているXRControllerのUIPressUsageでUIをクリックするものを決めているっぽい
最後に
強くなった