テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

UnityのuGUIのクリック範囲を広げたり制限したりする方法

Unityのボタンは画像の範囲でクリック判定を行います。

この範囲は基本的にGraphicクラスが表示されている範囲に適応されます。要するに「画像が表現されている範囲(の四角)」に適応されます。

 

f:id:tsubaki_t1:20150131001736p:plain

 

この当たり判定の範囲を絞るには、ICanvasRaycastFilterを使用します。この範囲を設定することで、実際に当たり判定が発生する範囲を限定することができます。

例えばボタンの当たり判定を円形にくりぬくような場合、以下の様なコードが使用できます。


円形当たり判定のボタン

f:id:tsubaki_t1:20150131004348g:plain

逆に当たり判定の範囲を広げる場合、以下のコードが使用できます。 このコードは単純に画像を描画せずGraphicの当たり判定の範囲だけを使用します。

f:id:tsubaki_t1:20150131004156g:plain


GraphicRaycasterの当たり判定だけを使う

このコードをImageの変わりに設定し、Buttonの子オブジェクトに設定すると、RectTranformのサイズをボタンの当たり判定として使用することが出来ます。*1

f:id:tsubaki_t1:20150131004930p:plain

*1:動作にはCanvasRendererが必要です