From 5d3366f2e0f687995eb7ad2107c4379fe7acd4e8 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 04 七月 2025 11:54:05 +0800
Subject: [PATCH] 18 子 2D卡牌客户端搭建 / 2D卡牌客户端搭建 特效穿透问题修复

---
 Main/System/UIBase/UIBase.cs             |    3 ++-
 Main/Utility/EffectPenetrationBlocker.cs |   49 ++++++++++++++-----------------------------------
 2 files changed, 16 insertions(+), 36 deletions(-)

diff --git a/Main/System/UIBase/UIBase.cs b/Main/System/UIBase/UIBase.cs
index 5e7feb5..53420e0 100644
--- a/Main/System/UIBase/UIBase.cs
+++ b/Main/System/UIBase/UIBase.cs
@@ -184,9 +184,10 @@
 
         // 璁剧疆Canvas灞炴��
         canvas.overrideSorting = true;
-
         canvas.worldCamera = CameraManager.uiCamera;
 
+        canvas.sortingLayerID = SortingLayer.NameToID("UI"); // 纭繚浣跨敤姝g‘鐨勬帓搴忓眰
+
         // 鑾峰彇鎴栨坊鍔燙anvasGroup缁勪欢
         canvasGroup = GetComponent<CanvasGroup>();
         if (canvasGroup == null)
diff --git a/Main/Utility/EffectPenetrationBlocker.cs b/Main/Utility/EffectPenetrationBlocker.cs
index 42d6837..5636595 100644
--- a/Main/Utility/EffectPenetrationBlocker.cs
+++ b/Main/Utility/EffectPenetrationBlocker.cs
@@ -1,3 +1,4 @@
+using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -11,10 +12,7 @@
     public bool autoAdjustSorting = true;
     
     [Tooltip("鐗规晥娓叉煋鍣紝濡傛灉涓虹┖鍒欒嚜鍔ㄨ幏鍙�")]
-    public Renderer[] effectRenderers;
-    
-    [Tooltip("鐗规晥绮掑瓙绯荤粺锛屽鏋滀负绌哄垯鑷姩鑾峰彇")]
-    public ParticleSystem[] particleSystems;
+    public List<Renderer> effectRenderers = new List<Renderer>();
     
     [Tooltip("鑷畾涔夋帓搴忛『搴忥紝浠呭湪涓嶈嚜鍔ㄨ皟鏁存椂鏈夋晥")]
     public int customSortingOrder = 0;
@@ -26,30 +24,28 @@
     public Canvas parentCanvas;
     
     [Tooltip("鐗规晥鍦–anvas涓殑鎺掑簭鍋忕Щ閲�")]
-    public int _sortingOrderOffset = 0;
+    public int sortingOrderOffset = 1;
     
     public int canvasSortingOrder = 0;
+
+    public int renderQueue = 3000;//榛樿鍊�
     
     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();
@@ -86,9 +82,9 @@
             // 濡傛灉娌℃湁鎵惧埌鐖剁骇Canvas锛屽垯浣跨敤榛樿鍊�
             canvasSortingOrder = 0;
         }
-        
+
         // 灏嗙壒鏁堢殑鎺掑簭椤哄簭璁剧疆涓篊anvas鎺掑簭椤哄簭鍔犱笂鍋忕Щ閲�
-        ApplySortingSettings(canvasSortingOrder + _sortingOrderOffset, customSortingLayer);
+        ApplySortingSettings(canvasSortingOrder + sortingOrderOffset, customSortingLayer);
     }
     
     /// <summary>
@@ -104,28 +100,11 @@
             if (renderer != null)
             {
                 renderer.sortingOrder = sortingOrder;
+                renderer.material.renderQueue = renderQueue; // 璁剧疆娓叉煋闃熷垪
                 // renderer.material.renderQueue = overlayRQ;
                 if (!string.IsNullOrEmpty(sortingLayer))
                 {
                     renderer.sortingLayerName = sortingLayer;
-                }
-            }
-        }
-        
-        // 搴旂敤鍒扮矑瀛愮郴缁�
-        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;
-                    }
                 }
             }
         }

--
Gitblit v1.8.0