diff --git a/Assets/Art/UIPrefab/UITools.prefab b/Assets/Art/UIPrefab/UITools.prefab index ff313573..382798ca 100644 --- a/Assets/Art/UIPrefab/UITools.prefab +++ b/Assets/Art/UIPrefab/UITools.prefab @@ -51,6 +51,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: answers: [] + bg: {fileID: 2575765536656914917} Scroll: {fileID: 3666318679728618663} Content: {fileID: 8229723427790603414} ItemPrefab: {fileID: 3266964766418377106} @@ -869,6 +870,7 @@ GameObject: - component: {fileID: 4604846658045866225} - component: {fileID: 7995524027316056123} - component: {fileID: 2575765536656914917} + - component: {fileID: 7995406576721174090} m_Layer: 0 m_Name: bg m_TagString: Untagged @@ -891,9 +893,9 @@ RectTransform: - {fileID: 9189599814967438796} m_Father: {fileID: 4477385101412774245} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: -133, y: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 111.5, y: 0} m_SizeDelta: {x: 223, y: 653} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &7995524027316056123 @@ -934,6 +936,22 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7995406576721174090 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3256755621147846471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: bg + CustomComment: + mComponentName: UnityEngine.UI.Image --- !u!1 &3509989120642977392 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Actions/UIToolsAction.cs b/Assets/Scripts/Actions/UIToolsAction.cs index 0861ae3d..b230c731 100644 --- a/Assets/Scripts/Actions/UIToolsAction.cs +++ b/Assets/Scripts/Actions/UIToolsAction.cs @@ -28,6 +28,7 @@ public class UIToolsAction : IAction string autoHide; string random; string scrollSpeed; + string position; public static UIToolsAction Allocate(Dictionary datas, System.Action onDelayFinish = null) { var retNode = mPool.Allocate(); @@ -48,6 +49,7 @@ public class UIToolsAction : IAction retNode.autoHide = datas.ContainsKey("autoHide") ? datas["autoHide"] : ""; retNode.random = datas.ContainsKey("random") ? datas["random"] : ""; retNode.scrollSpeed = datas.ContainsKey("scrollSpeed") ? datas["scrollSpeed"] : ""; + retNode.position = datas.ContainsKey("position") ? datas["position"] : ""; return retNode; } @@ -97,6 +99,7 @@ public class UIToolsAction : IAction { data.autoHideResult = -1; } + data.position = position; UIKit.OpenPanelAsync(uiData: data, canvasLevel: UILevel.PopUI).ToAction().StartGlobal(() => this.Finish()); } diff --git a/Assets/Scripts/UI/UITools.Designer.cs b/Assets/Scripts/UI/UITools.Designer.cs index 6ecd151d..a3e25de3 100644 --- a/Assets/Scripts/UI/UITools.Designer.cs +++ b/Assets/Scripts/UI/UITools.Designer.cs @@ -5,11 +5,13 @@ using QFramework; namespace QFramework.Example { - // Generate Id:5f777d12-69d4-455d-bef6-fb39dbeda60e + // Generate Id:be7133cf-6b67-4ebc-b151-f39cadcba0d2 public partial class UITools { public const string Name = "UITools"; + [SerializeField] + public UnityEngine.UI.Image bg; [SerializeField] public UnityEngine.UI.ScrollRect Scroll; [SerializeField] @@ -21,6 +23,7 @@ namespace QFramework.Example protected override void ClearUIComponents() { + bg = null; Scroll = null; Content = null; ItemPrefab = null; diff --git a/Assets/Scripts/UI/UITools.cs b/Assets/Scripts/UI/UITools.cs index 1b9de38a..ddea43ad 100644 --- a/Assets/Scripts/UI/UITools.cs +++ b/Assets/Scripts/UI/UITools.cs @@ -25,6 +25,7 @@ namespace QFramework.Example public float autoHideResult = -1; public bool random = false; public float scrollSpeed = 25; + public string position; } public partial class UITools : UIPanel { @@ -140,6 +141,35 @@ namespace QFramework.Example } mResLoader.LoadAsync(); Scroll.verticalNormalizedPosition = 1; + + + switch (mData.position) + { + case "left": + // 将锚点设为父容器的右侧中间(Middle-Right) + bg.rectTransform.anchorMin = new Vector2(0, 0.5f); // 左下锚点(右侧) + bg.rectTransform.anchorMax = new Vector2(0, 0.5f); // 右上锚点(右侧) + + // 将位置偏移归零(相对于锚点) + bg.rectTransform.anchoredPosition = Vector2.zero; + + // 可选:设置轴心点为右侧中点(影响缩放/旋转中心) + bg.rectTransform.pivot = new Vector2(0, 0.5f); + break; + case "right": + default: + // 将锚点设为父容器的右侧中间(Middle-Right) + bg.rectTransform.anchorMin = new Vector2(1, 0.5f); // 左下锚点(右侧) + bg.rectTransform.anchorMax = new Vector2(1, 0.5f); // 右上锚点(右侧) + + // 将位置偏移归零(相对于锚点) + bg.rectTransform.anchoredPosition = Vector2.zero; + + // 可选:设置轴心点为右侧中点(影响缩放/旋转中心) + bg.rectTransform.pivot = new Vector2(1, 0.5f); + break; + } + } public void SetSelected(GameObject item, bool isRight) diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index 60bfbd53..f4a4fe95 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -580,6 +580,11 @@ namespace XMLTool { act.args.Add("scrollSpeed", scrollSpeed.Value); } + var position = action.Attribute("position"); + if (position != null) + { + act.args.Add("position", position.Value); + } newAction = act; } break; diff --git a/Doc/Xml閰嶇疆鏂囨。.xml b/Doc/Xml閰嶇疆鏂囨。.xml index 34ad9062..9768cd64 100644 --- a/Doc/Xml閰嶇疆鏂囨。.xml +++ b/Doc/Xml閰嶇疆鏂囨。.xml @@ -31,7 +31,8 @@ autoHide =-1 鍒欑偣鍑荤粨鏉 鍚﹀垯 绛夊緟瀵瑰簲鏃堕棿鍚庤嚜鍔ㄧ粨鏉 totalScore 鏄厤鍚坵rongScore鐨勭敤浜庡垵濮嬪寲涓涓垎鏁 鐒跺悗閫夋嫨鎵e垎 random 鏄惁鎵撲贡devices鐨勯『搴 - scrollSpeed 榧犳爣婊氳疆鐨勬粦鍔ㄩ熷害--> + scrollSpeed 榧犳爣婊氳疆鐨勬粦鍔ㄩ熷害 + position left/right 鍙互璁╅亾鍏锋爮鍦ㄥ乏渚ф垨鑰呭彸渚--> + scrollSpeed="25" + position="right">