UI で SpriteMask を使用して、シェーダのパーティクル エフェクトをカットします。

序文

マスクでパーティクルエフェクトをカットする必要があるためです。しかし、特殊効果の同僚は、すべてのシェーダーに Stencil を追加することを望んでいません。そこでSpriteMaskメソッドを使ってカットします。

使用手順

1.SpriteMaskコンポーネントを追加する

ここに画像の説明を挿入
必要なマスクの形状に応じてスプライト画像を設定します。また、実際にはスプライトであり、UI システムに属していないため、マスクのサイズを調整するには、Scale を使用して設定する必要があります。

2. パーティクルの設定

パーティクル システムの [レンダラー] 列で、[マスキング] ラベルを [マスクの内側に表示] に設定し
ここに画像の説明を挿入
、[実行] をクリックして表示します。トリミング前とトリミング後の比較:

カット前 カット後

3. マスクを画面のサイズに合わせます

サイズ属性は自動的に調整されないため、サイズを自動的に調整するには追加のスクリプトを追加する必要があります。

public class AdjustSpriteSize : MonoBehaviour
    {
    
    
        //手动记录父节点的Rect大小
        public Vector2 referenceSize = new Vector2(1424, 800);
        void Start()
        {
    
    
            Vector2 curSize = transform.parent.GetComponent<RectTransform>().rect.size;
            
            transform.position = Vector3.zero;
            GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
            
            //调整大小
            transform.localScale = new Vector2(
                transform.localScale.x * (curSize.x / referenceSize.x), 
                transform.localScale.y * (curSize.y / referenceSize.y));
        }
    }

4 追加の注意事項

このSpriteMaskの上層がMaskコンポーネントを使用している場合、パーティクルが表示されない場合があります。
解決策: SpriteMask のカスタム範囲を調整します。または、上部のマスクコンポーネントの画像の透明度を 0 に調整します。

おすすめ

転載: blog.csdn.net/weixin_38027841/article/details/131724456