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