From 6208ed5ed833142a459d0dc8ad8622ca8047a80e Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 13 五月 2025 11:23:07 +0800
Subject: [PATCH] update

---
 Main/UI/UIManager.cs |   84 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 72 insertions(+), 12 deletions(-)

diff --git a/Main/UI/UIManager.cs b/Main/UI/UIManager.cs
index 297144b..19037f0 100644
--- a/Main/UI/UIManager.cs
+++ b/Main/UI/UIManager.cs
@@ -37,6 +37,38 @@
 
     #region 鍒濆鍖栨柟娉�
     
+
+    #region 缂撳瓨鍙橀噺
+    
+    // 缂撳瓨Transform鏌ユ壘缁撴灉
+    private Dictionary<UILayer, Transform> layerTransformCache = new Dictionary<UILayer, Transform>();
+    
+    // 缂撳瓨灞傜骇瀵瑰簲鐨勫熀纭�鎺掑簭椤哄簭
+    private Dictionary<UILayer, int> layerSortingOrderCache = new Dictionary<UILayer, int>();
+    
+    #endregion
+    
+    // 鍒濆鍖栫紦瀛�
+    private void InitCache()
+    {
+        // 鍒濆鍖栧眰绾ransform缂撳瓨
+        layerTransformCache.Clear();
+        layerTransformCache[UILayer.Static] = staticTrans;
+        layerTransformCache[UILayer.Bottom] = bottomTrans;
+        layerTransformCache[UILayer.Mid] = midTrans;
+        layerTransformCache[UILayer.Top] = topTrans;
+        layerTransformCache[UILayer.System] = systemTrans;
+        
+        // 鍒濆鍖栧眰绾ф帓搴忛『搴忕紦瀛�
+        layerSortingOrderCache.Clear();
+        layerSortingOrderCache[UILayer.Static] = BASE_SORTING_ORDER;
+        layerSortingOrderCache[UILayer.Bottom] = BASE_SORTING_ORDER * 10;
+        layerSortingOrderCache[UILayer.Mid] = BASE_SORTING_ORDER * 100;
+        layerSortingOrderCache[UILayer.Top] = BASE_SORTING_ORDER * 1000;
+        layerSortingOrderCache[UILayer.System] = BASE_SORTING_ORDER * 10000;
+    }
+
+
     // 鍒濆鍖�
     public void Init()
     {
@@ -91,41 +123,69 @@
     // 鑾峰彇UI灞傜骇瀵瑰簲鐨勫熀纭�鎺掑簭椤哄簭
     private int GetBaseSortingOrderForLayer(UILayer layer)
     {
+        if (layerSortingOrderCache.TryGetValue(layer, out int order))
+            return order;
+            
+        // 濡傛灉缂撳瓨涓病鏈夛紝浣跨敤鍘熸潵鐨勬柟娉曡绠楀苟缂撳瓨缁撴灉
+        int result;
         switch (layer)
         {
             case UILayer.Static:
-                return BASE_SORTING_ORDER;
+                result = BASE_SORTING_ORDER;
+                break;
             case UILayer.Bottom:
-                return BASE_SORTING_ORDER * 10;
+                result = BASE_SORTING_ORDER * 10;
+                break;
             case UILayer.Mid:
-                return BASE_SORTING_ORDER * 100;
+                result = BASE_SORTING_ORDER * 100;
+                break;
             case UILayer.Top:
-                return BASE_SORTING_ORDER * 1000;
+                result = BASE_SORTING_ORDER * 1000;
+                break;
             case UILayer.System:
-                return BASE_SORTING_ORDER * 10000;
+                result = BASE_SORTING_ORDER * 10000;
+                break;
             default:
-                return BASE_SORTING_ORDER * 10;
+                result = BASE_SORTING_ORDER * 10;
+                break;
         }
+        
+        layerSortingOrderCache[layer] = result;
+        return result;
     }
 
     // 鑾峰彇灞傜骇瀵瑰簲鐨凾ransform
     private Transform GetTransForLayer(UILayer layer)
     {
+        if (layerTransformCache.TryGetValue(layer, out Transform trans))
+            return trans;
+            
+        // 濡傛灉缂撳瓨涓病鏈夛紝浣跨敤鍘熸潵鐨勬柟娉曡幏鍙栧苟缂撳瓨缁撴灉
+        Transform result;
         switch (layer)
         {
             case UILayer.Static:
-                return staticTrans;
+                result = staticTrans;
+                break;
             case UILayer.Bottom:
-                return bottomTrans;
+                result = bottomTrans;
+                break;
             case UILayer.Mid:
-                return midTrans;
+                result = midTrans;
+                break;
             case UILayer.Top:
-                return topTrans;
+                result = topTrans;
+                break;
             case UILayer.System:
-                return systemTrans;
+                result = systemTrans;
+                break;
             default:
-                return bottomTrans;
+                result = bottomTrans;
+                break;
         }
+        
+        layerTransformCache[layer] = result;
+        return result;
     }
     
     // 鑾峰彇UI瀹炰緥锛屽鏋滀笉瀛樺湪鍒欒繑鍥瀗ull

--
Gitblit v1.8.0