【Unity/AssetStore】AlphaMaskを使ってみた
- 7/15のアセットストアのセールで売っていたので購入
- ちょうど下記のようなことが出来ないか考えていた
Spriteに対してはこのアプローチで良いとして、特定のUIグループに対して半透明マスク掛ける方法を探している
— 青木とと(ˊ꒳ˋ*) (@lycoris102) 2016年6月22日
こんな感じのアセット
https://www.assetstore.unity3d.com/jp/#!/content/29764
- 任意のSprite/uGUI要素、およびその集合に対してMaskを掛ける事が出来る
- ShaderおよびMasterialを要素を適応させるためのScript、サンプルシーンが内包されている
使い方
- (1) 親となるGameObjectを生成する
- (2) 子としてMaskを適応したいSpriteを配置する
- uGUIの場合も使用可能で、Imageを使用する
- (3) 子としてAlphaMask内にあるMaskをアタッチしたGameObjectを配置する
- Attach時にMaskRendererがAddComponentされる
- (4) MaskMaterialに任意のTextureを指定する
- (5) MaskComponentやscale等をよしなにごにょる
- (6) MaskComponent内の [Apply Mask to Siblings in Hierarchy] を押す
- (7) 自動的にSprite (image) のMaterialに対してMaskMaterialが適応される
- Maskと同居しているGameObjectが子要素を持つ場合、子にも適応される
MaskComponent
- MaskMappingWorldAxis
- マスクの軸 / 通常はカメラの向きと同方向に設定する
- InvertAxis
- 反転させた軸に対してマスクを適応させる時に設定する
- ClampAlpha(Horizontally|Vertically)
- ClampingBorder
- 上記のClampの設定が有効の場合、境界を調整する事が出来る
- UseMaskAlphaChannel
- アルファチャンネルを有効にする
- DisplayMask
- MaskのTextureを描画する (確認用)
- Apply Mask to Siblings in Hierarchy
- 上記の設定を反映させる
雑感
- 複数コンポーネントに対しMask掛ける事が出来るのが良い
- Shader書けない民は一旦これで、という感じ
- Sample内に含まれている「ロゴにスペキュラ掛ける」みたいな用法も出来て面白い
- セールなので勢いで購入したけど類似アセット結構ありそうなのが懸念...!!