皆さんUnityでゲームを作った時に、特定箇所のUI以外は触らせたくないって事ありませんか?
私はチュートリアル画面を作る時に必要でした。
普通に調べると、Maskコンポーネントが出てくるんですが、あれでは実現できません。
完成図
必要なスクリプトをDL
実はUnityの標準機能ではできないっぽいです。
かといってシェーダーで拡張するのも慣れていない人には大変!
そこで「UnmaskForUGUI」という神UI拡張機能を利用させていただきます!
github.com
Download ZIP より
zipファイル内の下記2つのファイルを、Assetsフォルダ以下にコピペしましょう。
作っていこう
最終的な階層はこんな感じ
Mask には、Maskコンポーネントを追加。Maskコンポーネントは必須っぽいです。
Image_UnMask には、Unmaskコンポーネントを追加。位置・サイズを指定。
Image_Black は少し説明します。
①Image_Unmaskと同階層のヒエラルキー下側にいるオブジェクトが逆マスクされます。なので、マスクオブジェクトを動かしても暗い部分は動かないです(重要)
②Raycast Target はTrue。Falseだと暗い部分にあるUIを触れてしまいます。
③Unmask Raycast Filter。ここ重要。UnmaskコンポーネントをD&Dすることで、その領域内のUIだけを触れるようになります。
完成です!
あとは、逆マスク領域の位置・大きさをチュートリアル中に変更できる仕組みを作ればいいですね!