| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | |