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