トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【Unity】UI入力中かどうかの判定【EventSystem.current.IsPointerOverGameObject()】

こちらの記事のままだけど一応メモ

nn-hokuson.hatenablog.com

解決したいこと

WASDキーで移動するゲーム内で、InputFieldに名前やチャットなど入力するとき、「w」などを押すと移動してしまう。

これをどうにかしたい!

あとドラッグでカメラ回している時とかも、スクロールUIをマウスでドラッグしてスクロールするとカメラのほうも反応してしまう!

uGUIに入力中か判定

判定方法はいろいろあるだろうけど、これ知らなかったし一番便利だった!

docs.unity3d.com

if (EventSystem.current.IsPointerOverGameObject())

でuGUI操作中だったらtrueになる。

 

スマホはInput.GetTouch(0).fingerIdを入れないといけないって。

#if UNITY_EDITOR
if(EventSystem.current.IsPointerOverGameObject()){
return;
}
#else
if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) {
return;
}
#endif

 

Joystickの入力も追加したい

joystickアセットを追加したんだけど、これを動かしたときも画面のドラッグが反応してしまう;;

bibinbaleo.hatenablog.com

EventSyetemの入力じゃないからなのか・・・?

docs.unity3d.com

結局Joystickが動いているかどうかの判定にした