原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】マスクによる切り抜きのエッジ部分をソフトに表示するSoftMaskForUGUI

お前の可愛いを全員が好きだと思うなよ

Twitterのアイコンが生意気そうな柴犬から元の青い鳥に復活して一安心な皆さんこんにちは。PCで呟こうとすると人を小馬鹿にしたような柴犬のアイコンを見なくてはならず一時はTwitter自体を辞めようかとも思ったのですが、無事に復活して良かったです。いくら経営者だからといって自分の趣味趣向を何の通告もなく一方的に押してけるのは止めて頂きたいものです。

 

画像(Image)の切り抜き

以前からUnityでは画像(Image)に対して任意の形状で切り抜いて表示するMaskという機能がありました。
これにより大きな画像の一部をボタンの模様にしたり、画面転換の演出の一部として使うことができるのですが、CutOffのような形で切り抜くので切り抜き画像のエッジ部分が非常に目立ってしまい、その為使用用途が限られていました。

 

しかしUnity2020バージョンからはRectMask2Dコンポーネントに「Softness」のパラメータが追加になり、画像を矩形に切り抜く場合にはSoftness」のパラメータを変更することでソフトマスクとして切り抜くことが出来ます。

上記の通り「Softness」のパラメータに0以上の数字を設定すると

こんな感じで周囲をぼかすような形で矩形に切り抜くことができます。

 

SoftMaskForUGUI

とはいえ、矩形だけでは色々な使用ケースには対応できないので、できれば任意の形で切り抜きを行いたいと思います。
その為の任意の形でのソフトマスクを実現するパッケージがGitHubの方で公開されています。

github.com

こちらのパッケージはお使いのPCがGitHubを導入している場合はPackage Managerから上記のURLを指定することでインポートできます
GitHubを導入してない場合は、ReleaseタブからSource.zipをダウンロードして、展開したフォルダの中にあるShaderフォルダとScriptフォルダをUnityEditorのProjectウィンドウへDrag&Dropすることで導入することができます。(事前にmetaファイルは削除した方が良い)

 

使い方

このパッケージはRectMask2Dのようなパラメータでソフトマスクを実現するのではなく、Mask画像のアルファ値を適用することでソフトマスクを実現しているのでソフトマスクの元となるMask画像は自分で用意する必要があります。今回は以下のような画像を作りました。

 

次に通常のMaskと同様に切り抜きを行いたい画像(Image)をMask画像の子オブジェトとします。

Mask画像側に「SoftMask」という2つのコンポーネントをセットし、Imageには上記のMask画像を設定します。

次にマスクしたい画像(Image)にSoft Maskableというコンポーネントを追加します。

すると下図のとおりきれいなソフトマスクが作れます。

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。