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