From eb27e5fd31f73b998a4bbd85511a31e40b8c61b7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 十一月 2025 17:03:47 +0800
Subject: [PATCH] 0312 关闭游戏内日志

---
 Main/Utility/EffectPenetrationBlocker.cs |  111 ++++++++++++++++++++++++++++++-------------------------
 1 files changed, 61 insertions(+), 50 deletions(-)

diff --git a/Main/Utility/EffectPenetrationBlocker.cs b/Main/Utility/EffectPenetrationBlocker.cs
index 42d6837..25350a6 100644
--- a/Main/Utility/EffectPenetrationBlocker.cs
+++ b/Main/Utility/EffectPenetrationBlocker.cs
@@ -1,5 +1,10 @@
+using System;
+using System.Collections.Generic;
+using Spine.Unity;
 using UnityEngine;
 using UnityEngine.UI;
+
+
 
 /// <summary>
 /// 鐗规晥绌块�忛樆鎸″櫒
@@ -9,47 +14,44 @@
 {
     [Tooltip("鏄惁鍦║I灞傜骇涓嬭嚜鍔ㄨ皟鏁存帓搴忛『搴�")]
     public bool autoAdjustSorting = true;
-    
+
     [Tooltip("鐗规晥娓叉煋鍣紝濡傛灉涓虹┖鍒欒嚜鍔ㄨ幏鍙�")]
-    public Renderer[] effectRenderers;
-    
-    [Tooltip("鐗规晥绮掑瓙绯荤粺锛屽鏋滀负绌哄垯鑷姩鑾峰彇")]
-    public ParticleSystem[] particleSystems;
-    
+    public List<Renderer> effectRenderers = new List<Renderer>();
+
     [Tooltip("鑷畾涔夋帓搴忛『搴忥紝浠呭湪涓嶈嚜鍔ㄨ皟鏁存椂鏈夋晥")]
     public int customSortingOrder = 0;
-    
+
     [Tooltip("鑷畾涔夋帓搴忓眰锛屼负绌哄垯浣跨敤榛樿UI灞�")]
     public string customSortingLayer = "UI";
-    
+
     [Tooltip("鐗规晥鎵�灞炵殑Canvas锛屽鏋滀负绌哄垯鏌ユ壘鐖剁骇Canvas")]
     public Canvas parentCanvas;
-    
+
     [Tooltip("鐗规晥鍦–anvas涓殑鎺掑簭鍋忕Щ閲�")]
-    public int _sortingOrderOffset = 0;
-    
+    public int sortingOrderOffset = 1;
+
     public int canvasSortingOrder = 0;
-    
+
+    public int renderQueue = 3000;//榛樿鍊�
+
+    public Action<string, int> onSortingChanged;
+
     private void Awake()
     {
+        transform.GetComponentsInChildren(true, effectRenderers);
+
         // 濡傛灉娌℃湁鎸囧畾娓叉煋鍣紝鍒欒嚜鍔ㄨ幏鍙�
-        if (effectRenderers == null || effectRenderers.Length == 0)
+        if (effectRenderers == null || effectRenderers.Count == 0)
         {
-            effectRenderers = GetComponentsInChildren<Renderer>(true);
+            transform.GetComponentsInChildren<Renderer>(true, effectRenderers);
         }
-        
-        // 濡傛灉娌℃湁鎸囧畾绮掑瓙绯荤粺锛屽垯鑷姩鑾峰彇
-        if (particleSystems == null || particleSystems.Length == 0)
-        {
-            particleSystems = GetComponentsInChildren<ParticleSystem>(true);
-        }
-        
+
         // 鏌ユ壘鐖剁骇Canvas
         if (parentCanvas == null)
         {
             parentCanvas = GetComponentInParent<Canvas>();
         }
-        
+
         if (autoAdjustSorting)
         {
             UpdateSortingOrder();
@@ -60,7 +62,7 @@
             ApplySortingSettings(customSortingOrder, customSortingLayer);
         }
     }
-    
+
     private void OnEnable()
     {
         if (autoAdjustSorting)
@@ -68,14 +70,14 @@
             UpdateSortingOrder();
         }
     }
-    
+
     /// <summary>
     /// 鏇存柊鎺掑簭椤哄簭锛岀‘淇濈壒鏁堟樉绀哄湪褰撳墠UI鐣岄潰涓婃柟
     /// </summary>
     public void UpdateSortingOrder()
     {
         if (!autoAdjustSorting) return;
-        
+
         // 鑾峰彇鐖剁骇Canvas鐨勬帓搴忛『搴�
         if (parentCanvas != null)
         {
@@ -86,11 +88,11 @@
             // 濡傛灉娌℃湁鎵惧埌鐖剁骇Canvas锛屽垯浣跨敤榛樿鍊�
             canvasSortingOrder = 0;
         }
-        
+
         // 灏嗙壒鏁堢殑鎺掑簭椤哄簭璁剧疆涓篊anvas鎺掑簭椤哄簭鍔犱笂鍋忕Щ閲�
-        ApplySortingSettings(canvasSortingOrder + _sortingOrderOffset, customSortingLayer);
+        ApplySortingSettings(canvasSortingOrder + sortingOrderOffset, customSortingLayer);
     }
-    
+
     /// <summary>
     /// 搴旂敤鎺掑簭璁剧疆鍒版墍鏈夋覆鏌撳櫒鍜岀矑瀛愮郴缁�
     /// </summary>
@@ -104,6 +106,7 @@
             if (renderer != null)
             {
                 renderer.sortingOrder = sortingOrder;
+                renderer.material.renderQueue = renderQueue; // 璁剧疆娓叉煋闃熷垪
                 // renderer.material.renderQueue = overlayRQ;
                 if (!string.IsNullOrEmpty(sortingLayer))
                 {
@@ -111,26 +114,10 @@
                 }
             }
         }
-        
-        // 搴旂敤鍒扮矑瀛愮郴缁�
-        foreach (ParticleSystem ps in particleSystems)
-        {
-            if (ps != null)
-            {
-                ParticleSystemRenderer psRenderer = ps.GetComponent<ParticleSystemRenderer>();
-                if (psRenderer != null)
-                {
-                    psRenderer.sortingOrder = sortingOrder;
-                    // psRenderer.material.renderQueue = overlayRQ;
-                    if (!string.IsNullOrEmpty(sortingLayer))
-                    {
-                        psRenderer.sortingLayerName = sortingLayer;
-                    }
-                }
-            }
-        }
+
+        onSortingChanged?.Invoke(sortingLayer, sortingOrder);
     }
-    
+
     /// <summary>
     /// 鎵嬪姩璁剧疆鎺掑簭椤哄簭
     /// </summary>
@@ -141,11 +128,11 @@
         {
             customSortingLayer = sortingLayer;
         }
-        
+
         autoAdjustSorting = false;
         ApplySortingSettings(customSortingOrder, customSortingLayer);
     }
-    
+
     /// <summary>
     /// 璁剧疆鐖剁骇Canvas
     /// </summary>
@@ -154,10 +141,34 @@
         parentCanvas = canvas;
         if (autoAdjustSorting)
         {
-            UpdateSortingOrder();
+            this.DelayFrame(UpdateSortingOrder);
         }
     }
 
+    /// <summary>
+    /// 搴旂敤閬僵鍖哄煙锛圧ectTransform锛夛紝鍙敤浜庤鍓壒鏁�
+    /// </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);
+            }
+        }
+    }
+
+
 #if UNITY_EDITOR
     [ContextMenu("Apply")]
     public void Apply()

--
Gitblit v1.8.0