From c6d9b71e95fecf4cbcfab5334fe5bcb90b5b0631 Mon Sep 17 00:00:00 2001
From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com>
Date: Mon, 16 Jun 2025 18:01:32 +0800
Subject: [PATCH] 1
---
Assets/ModuleCore/ModuleUI/ModuleUIPage/UITestPage.cs | 2 +-
Assets/SceneManager/SampleScene/SampleScene.unity | 1 +
Assets/UI Toolkit/Document/TestDocument.uxml | 11 ++++++++---
Packages/UITool/Runtime/ModuleUIPanel/UIScrollView.cs | 9 +++++++++
Packages/UITool/Runtime/ModuleUIPanel/UIScroller.cs | 4 ++--
5 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/Assets/ModuleCore/ModuleUI/ModuleUIPage/UITestPage.cs b/Assets/ModuleCore/ModuleUI/ModuleUIPage/UITestPage.cs
index 7138816..5294949 100644
--- a/Assets/ModuleCore/ModuleUI/ModuleUIPage/UITestPage.cs
+++ b/Assets/ModuleCore/ModuleUI/ModuleUIPage/UITestPage.cs
@@ -29,7 +29,7 @@ public class UITestPage : ModuleUIPage {
dropdown.SetValue(list);
dropdown.ValueChanged += (value) => Debug.Log(value);
- scrollView = new UIScrollView(ScrollView, root, UIDirection.FromTopToBottom);
+ scrollView = new UIScrollView(ScrollView, root, UIDirection.Vertical, UIDirection.FromLeftToRight, UIDirection.FromTopToBottom);
}
private void Update() {
dropdown.Update();
diff --git a/Assets/SceneManager/SampleScene/SampleScene.unity b/Assets/SceneManager/SampleScene/SampleScene.unity
index 3122f06..5c04f01 100644
--- a/Assets/SceneManager/SampleScene/SampleScene.unity
+++ b/Assets/SceneManager/SampleScene/SampleScene.unity
@@ -692,6 +692,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a3ee54ac782eb1d4a9c8b92a859c3d38, type: 3}
m_Name:
m_EditorClassIdentifier:
+ document: {fileID: 1327183335}
--- !u!1 &1334378334
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/UI Toolkit/Document/TestDocument.uxml b/Assets/UI Toolkit/Document/TestDocument.uxml
index 0a8115a..da3847b 100644
--- a/Assets/UI Toolkit/Document/TestDocument.uxml
+++ b/Assets/UI Toolkit/Document/TestDocument.uxml
@@ -5,8 +5,8 @@
-
-
+
+
@@ -15,12 +15,17 @@
+
+
+
+
+
-
+
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView.cs b/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView.cs
index 02f437d..05bd54a 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UIScrollView.cs
@@ -13,6 +13,10 @@ namespace MuHua {
public readonly VisualElement canvas;
/// 元素方向
public readonly UIDirection direction;
+ /// 水平滑动方向
+ public readonly UIDirection sh;
+ /// 垂直滑动方向
+ public readonly UIDirection sv;
/// 值改变时
public event Action ValueChanged;
@@ -35,6 +39,8 @@ namespace MuHua {
UIDirection sv = UIDirection.FromTopToBottom) : base(element) {
this.canvas = canvas;
this.direction = direction;
+ this.sh = sh;
+ this.sv = sv;
element.generateVisualContent += ElementGenerateVisualContent;
@@ -44,6 +50,7 @@ namespace MuHua {
if (sv == UIDirection.FromTopToBottom) { vertical = new UIScroller(ScrollerVertical, canvas, sv); }
if (sv == UIDirection.FromBottomToTop) { vertical = new UIScroller(ScrollerVertical, canvas, sv); }
+
//设置事件
horizontal.ValueChanged += (x) => { UpdateValue(new Vector2(x, value.y)); };
vertical.ValueChanged += (y) => { UpdateValue(new Vector2(value.x, y)); };
@@ -116,6 +123,8 @@ namespace MuHua {
float maxHeight = Viewport.resolvedStyle.height - Container.resolvedStyle.height;
float xPos = maxWidth * value.x;
float yPos = maxHeight * value.y;
+ xPos *= sh == UIDirection.FromLeftToRight ? 1 : -1;
+ yPos *= sv == UIDirection.FromTopToBottom ? 1 : -1;
Container.transform.position = new Vector3(xPos, yPos);
if (horizontal.value != value.x) { horizontal.UpdateValue(value.x, false); }
diff --git a/Packages/UITool/Runtime/ModuleUIPanel/UIScroller.cs b/Packages/UITool/Runtime/ModuleUIPanel/UIScroller.cs
index 37258eb..a8396cf 100644
--- a/Packages/UITool/Runtime/ModuleUIPanel/UIScroller.cs
+++ b/Packages/UITool/Runtime/ModuleUIPanel/UIScroller.cs
@@ -175,8 +175,8 @@ namespace MuHua {
public override void UpdateValue(float value, bool send = true) {
scroller.value = value;
if (send) { scroller.ValueChanged?.Invoke(value); }
- float max = scroller.element.resolvedStyle.height - scroller.Dragger.resolvedStyle.height;
- float y = Mathf.Lerp(max, 0, value);
+ float max = scroller.Dragger.resolvedStyle.height - scroller.element.resolvedStyle.height;
+ float y = Mathf.Lerp(0, max, value);
scroller.Dragger.transform.position = new Vector3(0, y);
}
}