はじめに
今回はMaskとは逆に、内側をくりぬくことができるUnmask For UGUIについて紹介したいと思います。


インストール方法
Unity2018.3あたり?からGitのURLからPakcageをインストールできるようになりました。
Git URL からのインストール - Unity マニュアル
今回はその方法でUnmask For UGUIをインストールしていきます。
まずはwindows -> Package MangaerからPackageManagerを開いた後、左上の+ボタンを押しAdd package from git URLを選択。

https://github.com/mob-sakai/UnmaskForUGUI.gitと入力をしてください。


基本的な使い方
Unmaskコンポーネントが動作するには,UnmaskコンポーネントがアタッチされているGameObjectの親にMaskコンポーネントがアタッチされている必要があります。
── MaskコンポーネントがアタッチされたImage └── UnmaskコンポーネントがアタッチされたUI element (Image, RawImage, Text, etc...) └── その他UI element (Image, RawImage, Text, etc...)
まずはMaskコンポーネントがアタッチされたImageを作ります。アルファ値は0だと動作しないみたいなので注意してください。

次にくり抜かれる側のUIを作ります。最初の画像でいう黒いUIの箇所ですね。

最後にくりぬくUIを作ります。Unmaskというコンポーネントをアタッチすることで実現できます。


ボタンを使った使い方
ボタンの箇所だけRayが通るようにしたいといった、マスクされていない箇所にRayを飛ばせるようにするにはUnmaskRaycastFilterコンポーネントを利用します。
Canvas └─ Button └─ Maskコンポーネント&UnmaskRaycastFilterコンポーネントがアタッチされたImage └── UnmaskコンポーネントがアタッチされたUI element (Image, RawImage, Text, etc...) └── その他UI element (Image, RawImage, Text, etc...)
Buttonはいつも通りのボタンです。

次にMaskコンポーネントをアタッチしたImageにUnmaskRaycastFilterをアタッチします。

UnmaskRaycastFilterコンポーネントのTarget UnmaskにはRayを透過するUIを指定します。
最後にUnmaskがアタッチされたUI elementを作成すれば完成です。


またUnmaskコンポーネントにはFit Target・Fit On Late Updateというプロパティがあると思いますが,ここにButtonを指定すると,自動的にButtonの大きさに合わせてくれます。(アニメーションしても大丈夫)
