三流豆腐。

三流のゲームプログラマ。C/C++/C#/Objective-C/python/技術向上を目指します。

【Unity】クリック箇所にuGUIがあるか判定する……そして……。

 

使用バージョン:Unity 2018.3.12f1

目次:

 

やりたい事

・クリック時に特定のuGUI以外だったら処理をさせない。

今回は赤枠のimage以外だったら処理させないようにします。

f:id:tofu_doon:20190421233017p:plain

 

順序

①Raycastの結果を受け取るListを用意する

②PointerEventDataの変数にクリック時のマウス座標を入れる

③RaycastAllを使用する

 

最初、Physics2D.Raycast使おうと思ってましたが、

uGUIには使えないみたいですね(>_<)

 

 使用方法

PointerEventData型の変数のpositionにマウスの座標を入れて、

RaycastAllの引数にPointerEventData型の変数とListを入れれば、

渡したListにRaycastにヒットした結果が入ってきます。

f:id:tofu_doon:20190421235221p:plain
結果のListからgameObjectにアクセスできるから大体の処理は出来そう。

以下は個人的にやりたかった処理。

f:id:tofu_doon:20190421235329p:plain

子オブジェクトがクリックされたかの確認というのは、

f:id:tofu_doon:20190421234758p:plain

Board以下にImage以外にも動的に追加されるので、

Boardの子オブジェクトをforeachで回してます。

ちなみにthisはBoard。

 

おまけ

f:id:tofu_doon:20190421235558p:plain

綺麗じゃないけどImage以外のところだったら処理しないようにはできたんだけどね!

学生の頃割とやってた書き方('ω')w