From 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 11 五月 2026 16:20:37 +0800
Subject: [PATCH] Merge branch 'master' into h5version

---
 Main/Utility/UIUtility.cs |   96 +++++++++++++++++++++++++++++++----------------
 1 files changed, 63 insertions(+), 33 deletions(-)

diff --git a/Main/Utility/UIUtility.cs b/Main/Utility/UIUtility.cs
index 0d9577c..2c3d6ac 100644
--- a/Main/Utility/UIUtility.cs
+++ b/Main/Utility/UIUtility.cs
@@ -3,15 +3,29 @@
 using UnityEngine;
 using UnityEngine.UI;
 using UnityEngine.EventSystems;
-using vnxbqy.UI;
+using Cysharp.Threading.Tasks;
+
 
 
 public static class UIUtility
 {
 
-    public static GameObject CreateWidget(string _sourceName, string _name)
+    public static async UniTask<GameObject> CreateWidget(string _sourceName, string _name)
     {
-        var prefab = ResManager.Instance.LoadAsset<GameObject>("UIComp", _sourceName);
+        var prefab = await UILoader.LoadPrefabAsync(_sourceName);
+        if (prefab == null)
+        {
+            return null;
+        }
+
+        var instance = GameObject.Instantiate(prefab);
+        instance.name = string.IsNullOrEmpty(_name) ? _sourceName : _name;
+        return instance;
+    }
+
+    public static async UniTask<GameObject> CreateWidgetAsync(string _sourceName, string _name)
+    {
+        var prefab = await UILoader.LoadPrefabAsync(_sourceName);
         if (prefab == null)
         {
             return null;
@@ -78,22 +92,16 @@
 
     public static Vector2 GetMaxWorldPosition(this RectTransform _rectTransform)
     {
-        Vector2 max;
-        var offsetY = (1 - _rectTransform.pivot.y) * _rectTransform.rect.height;
-        var offsetX = (1 - _rectTransform.pivot.x) * _rectTransform.rect.width;
-        max = _rectTransform.TransformPoint(offsetX, offsetY, 0);
-
-        return max;
+        Vector3[] cornors = new Vector3[4];
+        _rectTransform.GetWorldCorners(cornors);
+        return cornors[2];
     }
 
     public static Vector2 GetMinWorldPosition(this RectTransform _rectTransform)
     {
-        Vector2 min;
-        var offsetY = -_rectTransform.pivot.y * _rectTransform.rect.height;
-        var offsetX = -_rectTransform.pivot.x * _rectTransform.rect.width;
-        min = _rectTransform.TransformPoint(offsetX, offsetY, 0);
-
-        return min;
+        Vector3[] cornors = new Vector3[4];
+        _rectTransform.GetWorldCorners(cornors);
+        return cornors[0];
     }
 
     public static Vector2 GetMaxReferencePosition(this RectTransform _rectTransform, Transform _reference)
@@ -316,24 +324,6 @@
         vertexHelper.AddTriangle(currentVertCount, currentVertCount + 1, currentVertCount + 2);
     }
 
-    // public static string GetUIElementRelativePath(UIRoot _root, Transform _transform)
-    // {
-    //     List<Transform> parents = new List<Transform>() { _transform };
-    //     GetParents(_transform, ref parents);
-
-    //     if (parents.Contains(_root.transform))
-    //     {
-    //         parents.Remove(_root.transform);
-    //     }
-
-    //     var names = new string[parents.Count];
-    //     for (int i = 0; i < names.Length; i++)
-    //     {
-    //         names[i] = parents[i].gameObject.name;
-    //     }
-
-    //     return string.Join("/", names);
-    // }
 
     public static void GetParents(Transform _transform, ref List<Transform> _parents)
     {
@@ -350,4 +340,44 @@
         }
     }
 
+    public static string GetUIElementRelativePath(Transform _root, Transform _transform)
+    {
+        List<Transform> parents = new List<Transform>() { _transform };
+        GetParents(_transform, ref parents);
+
+        if (parents.Contains(_root))
+        {
+            parents.Remove(_root);
+        }
+
+        var names = new string[parents.Count];
+        for (int i = 0; i < names.Length; i++)
+        {
+            names[i] = parents[i].gameObject.name;
+        }
+
+        return string.Join("/", names);
+    }
+
+        /// <summary>
+    /// 寮哄埗鍒锋柊Layout锛岃В鍐冲祵濂桳ayout鍜孋ontentSizeFitter鐨勯噸鍙犻棶棰�
+    /// </summary>
+    public static async UniTask ForceRefreshLayout(Transform _layout)
+    {
+        await UniTask.DelayFrame(2);
+        // 鍒锋柊鎵�鏈塋ayout缁勪欢
+        var layouts = _layout.GetComponentsInChildren<LayoutGroup>(true);
+        foreach (var layout in layouts)
+        {
+            LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
+        }
+        await UniTask.DelayFrame(2);
+        // 鍒锋柊鎵�鏈塋ayout缁勪欢
+        foreach (var layout in layouts)
+        {
+            LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
+        }
+
+    }
+
 }

--
Gitblit v1.8.0