hch
2025-08-11 8fa8f928f44c91c38eed9404c33fe0d85cc3b7f3
Main/Utility/EffectPenetrationBlocker.cs
@@ -133,7 +133,30 @@
        parentCanvas = canvas;
        if (autoAdjustSorting)
        {
            UpdateSortingOrder();
            this.DelayFrame(UpdateSortingOrder);
        }
    }
    /// <summary>
    /// 应用遮罩区域(RectTransform),可用于裁剪特效
    /// </summary>
    public void PerformMask(RectTransform maskRect)
    {
        // 这里只是示例,实际可根据你的Shader或特效材质做裁剪
        foreach (Renderer renderer in effectRenderers)
        {
            if (renderer != null && renderer.material != null && maskRect != null)
            {
                Vector3[] corners = new Vector3[4];
                maskRect.GetWorldCorners(corners);
                Vector4 clipRect = new Vector4(corners[0].x, corners[0].y, corners[2].x, corners[2].y);
                renderer.material.SetVector("_ClipRect", clipRect);
                renderer.material.SetFloat("_UseClipRect", 1);
            }
            else if (renderer != null && renderer.material != null)
            {
                renderer.material.SetFloat("_UseClipRect", 0);
            }
        }
    }