From c13bb467a5bd9ab3b490aff1896e436965c9d2c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=80=9D=E6=B5=B7?= <1464576565@qq.com> Date: Fri, 27 Mar 2026 20:56:06 +0800 Subject: [PATCH] 11 11 --- .../Bundles/UI/UILoadUpdateWindow.prefab | 306 +++++++++++++++--- .../UI/RecyclerViewMixedItemRenderExample.cs | 179 ++++++++++ ...RecyclerViewMixedItemRenderExample.cs.meta | 11 + .../GameLogic/UI/TestScrollItemRender.cs | 19 ++ .../GameLogic/UI/TestScrollItemRender.cs.meta | 11 + .../GameLogic/UI/TestScrollViewHolder.cs | 13 +- .../Hotfix/GameLogic/UI/UILoadUpdate.cs | 22 +- .../Simulate/DefaultPackage_Simulate.bytes | Bin 1594 -> 1594 bytes .../Simulate/DefaultPackage_Simulate.hash | 2 +- .../Simulate/DefaultPackage_Simulate.json | 4 +- .../Packages/com.alicizax.unity.ui.extension | 2 +- Client/UserSettings/Layouts/default-2022.dwlt | 152 ++++----- 12 files changed, 572 insertions(+), 149 deletions(-) create mode 100644 Client/Assets/Scripts/Hotfix/GameLogic/UI/RecyclerViewMixedItemRenderExample.cs create mode 100644 Client/Assets/Scripts/Hotfix/GameLogic/UI/RecyclerViewMixedItemRenderExample.cs.meta create mode 100644 Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollItemRender.cs create mode 100644 Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollItemRender.cs.meta diff --git a/Client/Assets/Bundles/UI/UILoadUpdateWindow.prefab b/Client/Assets/Bundles/UI/UILoadUpdateWindow.prefab index 5fb3492..027892a 100644 --- a/Client/Assets/Bundles/UI/UILoadUpdateWindow.prefab +++ b/Client/Assets/Bundles/UI/UILoadUpdateWindow.prefab @@ -12,7 +12,6 @@ GameObject: - component: {fileID: 6045476244398503520} - component: {fileID: 3754033378428747194} - component: {fileID: 3596253569820580282} - - component: {fileID: 3077084243377102358} m_Layer: 5 m_Name: TestViewHolder m_TagString: Untagged @@ -130,53 +129,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: text: {fileID: 5232094481069283953} ---- !u!114 &3077084243377102358 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 13453462280259649} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d7e92b092d584bb39e5239463f064cbe, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 3754033378428747194} - m_ChildTransitions: [] - hoverAudioClip: {fileID: 0} - clickAudioClip: {fileID: 0} - m_OnClick: - m_PersistentCalls: - m_Calls: [] --- !u!1 &526598954257632073 GameObject: m_ObjectHideFlags: 0 @@ -857,6 +809,81 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &2329976737013403462 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1907812592080741783} + - component: {fileID: 3607481970725816690} + - component: {fileID: 2565391092231843161} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1907812592080741783 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2329976737013403462} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6975301584112558450} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3607481970725816690 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2329976737013403462} + m_CullTransparentMesh: 1 +--- !u!114 &2565391092231843161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2329976737013403462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &2753172308494168843 GameObject: m_ObjectHideFlags: 0 @@ -1014,6 +1041,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5086806237606523596} + - {fileID: 6072373770367706283} m_Father: {fileID: 2553447206821208227} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -1076,14 +1104,15 @@ MonoBehaviour: spacing: {x: 0, y: 5} padding: {x: 0, y: 0} scroll: 1 - snap: 0 + snap: 1 scrollSpeed: 1 wheelSpeed: 10 templates: - {fileID: 3596253569820580282} content: {fileID: 5086806237606523596} - showScrollBar: 0 - scrollbar: {fileID: 0} + showScrollBar: 1 + showScrollBarOnlyWhenScrollable: 1 + scrollbar: {fileID: 2341577578277520569} _layoutManagerTypeName: AlicizaX.UI.LinearLayoutManager layoutManager: rid: 6739296679894712320 @@ -1242,6 +1271,145 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4472311187933430706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6072373770367706283} + - component: {fileID: 2361740942430004009} + - component: {fileID: 848282937020660114} + - component: {fileID: 2341577578277520569} + - component: {fileID: 9175111019914771762} + m_Layer: 5 + m_Name: vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6072373770367706283 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4472311187933430706} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6975301584112558450} + m_Father: {fileID: 7522346725214463714} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &2361740942430004009 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4472311187933430706} + m_CullTransparentMesh: 1 +--- !u!114 &848282937020660114 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4472311187933430706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.3207547, g: 0.3207547, b: 0.3207547, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2341577578277520569 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4472311187933430706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2565391092231843161} + m_HandleRect: {fileID: 1907812592080741783} + m_Direction: 3 + m_Value: 0 + m_Size: 0.515 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &9175111019914771762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4472311187933430706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 682cfe39b0fffe544be8d5c11eb369e5, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &4920753690401047269 GameObject: m_ObjectHideFlags: 0 @@ -1382,6 +1550,42 @@ MonoBehaviour: _component: {fileID: 8895701322442684031} _hotkeyAction: {fileID: -4259428385912006275, guid: b603efb45eabf544d9f962c635627a64, type: 3} _hotkeyPressType: 1 +--- !u!1 &4963309661588926698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6975301584112558450} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6975301584112558450 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4963309661588926698} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1907812592080741783} + m_Father: {fileID: 6072373770367706283} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &5796037856908370449 GameObject: m_ObjectHideFlags: 0 diff --git a/Client/Assets/Scripts/Hotfix/GameLogic/UI/RecyclerViewMixedItemRenderExample.cs b/Client/Assets/Scripts/Hotfix/GameLogic/UI/RecyclerViewMixedItemRenderExample.cs new file mode 100644 index 0000000..9a1c57f --- /dev/null +++ b/Client/Assets/Scripts/Hotfix/GameLogic/UI/RecyclerViewMixedItemRenderExample.cs @@ -0,0 +1,179 @@ +using System; +using AlicizaX.UI; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public static class RecyclerViewMixedExample +{ + public const string HeaderViewName = "MixedExampleHeader"; + public const string LeftMessageViewName = "MixedExampleLeftMessage"; + public const string RightMessageViewName = "MixedExampleRightMessage"; + + public static void Register(UGMixedList list) + { + list.RegisterItemRender(HeaderViewName); + list.RegisterItemRender(LeftMessageViewName); + list.RegisterItemRender(RightMessageViewName); + } +} + +public abstract class MixedExampleItemData : IMixedViewData +{ + public string TemplateName { get; set; } +} + +public sealed class MixedExampleHeaderData : MixedExampleItemData +{ + public string Title; + + public MixedExampleHeaderData() + { + TemplateName = RecyclerViewMixedExample.HeaderViewName; + } +} + +public sealed class MixedExampleLeftMessageData : MixedExampleItemData +{ + public string Message; + + public MixedExampleLeftMessageData() + { + TemplateName = RecyclerViewMixedExample.LeftMessageViewName; + } +} + +public sealed class MixedExampleRightMessageData : MixedExampleItemData +{ + public string Message; + + public MixedExampleRightMessageData() + { + TemplateName = RecyclerViewMixedExample.RightMessageViewName; + } +} + +public sealed class MixedExampleHeaderViewHolder : InteractiveViewHolder +{ + [SerializeField] private TextMeshProUGUI title; + + public TextMeshProUGUI Title => title; +} + +public abstract class MixedExampleMessageViewHolder : InteractiveViewHolder +{ + [SerializeField] private Image background; + [SerializeField] private TextMeshProUGUI message; + + public TextMeshProUGUI Message => message; + public Image Background => background; +} + +public sealed class MixedExampleLeftMessageViewHolder : MixedExampleMessageViewHolder +{ +} + +public sealed class MixedExampleRightMessageViewHolder : MixedExampleMessageViewHolder +{ +} + +public sealed class MixedExampleHeaderItemRender : ItemRender +{ + public MixedExampleHeaderItemRender(MixedExampleHeaderViewHolder holder) : base(holder) + { + } + + protected override void Bind(MixedExampleHeaderData data, int index) + { + Holder.Title.text = data.Title; + } +} + +public abstract class MixedExampleMessageItemRender : ItemRender + where THolder : MixedExampleMessageViewHolder + where TData : MixedExampleItemData +{ + private static readonly Color NormalColor = Color.white; + private static readonly Color HoverColor = new(0.9f, 0.9f, 0.9f, 1f); + private static readonly Color SelectedColor = new(1f, 0.95f, 0.75f, 1f); + + private bool hovered; + private bool selected; + + protected MixedExampleMessageItemRender(THolder holder) : base(holder) + { + } + + protected override void Bind(TData data, int index) + { + Holder.Message.text = GetMessage(data); + ApplyBackgroundColor(); + } + + protected override void OnSelectionChanged(bool isSelected) + { + selected = isSelected; + ApplyBackgroundColor(); + } + + protected override void OnClear() + { + hovered = false; + selected = false; + ApplyBackgroundColor(); + } + + protected override void OnPointerEnter() + { + hovered = true; + ApplyBackgroundColor(); + } + + protected override void OnPointerExit() + { + hovered = false; + ApplyBackgroundColor(); + } + + protected abstract string GetMessage(TData data); + + private void ApplyBackgroundColor() + { + if (Holder.Background == null) + { + return; + } + + if (selected) + { + Holder.Background.color = SelectedColor; + return; + } + + Holder.Background.color = hovered ? HoverColor : NormalColor; + } +} + +public sealed class MixedExampleLeftMessageItemRender : MixedExampleMessageItemRender +{ + public MixedExampleLeftMessageItemRender(MixedExampleLeftMessageViewHolder holder) : base(holder) + { + } + + protected override string GetMessage(MixedExampleLeftMessageData data) + { + return data.Message; + } +} + +public sealed class MixedExampleRightMessageItemRender : MixedExampleMessageItemRender +{ + public MixedExampleRightMessageItemRender(MixedExampleRightMessageViewHolder holder) : base(holder) + { + } + + protected override string GetMessage(MixedExampleRightMessageData data) + { + return data.Message; + } +} diff --git a/Client/Assets/Scripts/Hotfix/GameLogic/UI/RecyclerViewMixedItemRenderExample.cs.meta b/Client/Assets/Scripts/Hotfix/GameLogic/UI/RecyclerViewMixedItemRenderExample.cs.meta new file mode 100644 index 0000000..ecdc972 --- /dev/null +++ b/Client/Assets/Scripts/Hotfix/GameLogic/UI/RecyclerViewMixedItemRenderExample.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa788c7b66e75b44bae8fbc40e1eea8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollItemRender.cs b/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollItemRender.cs new file mode 100644 index 0000000..6a12ccd --- /dev/null +++ b/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollItemRender.cs @@ -0,0 +1,19 @@ +using AlicizaX; +using AlicizaX.UI; + +public sealed class TestScrollItemRender : ItemRender +{ + public TestScrollItemRender(TestScrollViewHolder holder) : base(holder) + { + } + + protected override void Bind(TestData data, int index) + { + Holder.Text.text = data.Name; + } + + protected override void OnClick() + { + Log.Info(CurrentData.Name + " is clicked"); + } +} diff --git a/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollItemRender.cs.meta b/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollItemRender.cs.meta new file mode 100644 index 0000000..4739d3a --- /dev/null +++ b/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollItemRender.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aaec24e8ce52dd248a8f05e6eb99e8cf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollViewHolder.cs b/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollViewHolder.cs index a31d6f2..42e1ff0 100644 --- a/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollViewHolder.cs +++ b/Client/Assets/Scripts/Hotfix/GameLogic/UI/TestScrollViewHolder.cs @@ -1,19 +1,10 @@ -using System.Collections; -using System.Collections.Generic; using AlicizaX.UI; using TMPro; using UnityEngine; -using UnityEngine.Serialization; -public class TestScrollViewHolder : ViewHolder +public class TestScrollViewHolder : InteractiveViewHolder { [SerializeField] private TextMeshProUGUI text; - public override void BindViewData(T data) - { - if (data is TestData testData) - { - text.text = testData.Name; - } - } + public TextMeshProUGUI Text => text; } diff --git a/Client/Assets/Scripts/Hotfix/GameLogic/UI/UILoadUpdate.cs b/Client/Assets/Scripts/Hotfix/GameLogic/UI/UILoadUpdate.cs index a3590f1..050756c 100644 --- a/Client/Assets/Scripts/Hotfix/GameLogic/UI/UILoadUpdate.cs +++ b/Client/Assets/Scripts/Hotfix/GameLogic/UI/UILoadUpdate.cs @@ -22,11 +22,12 @@ public class UILoadUpdate : UITabWindow protected override void OnInitialize() { - _list = UGListCreateHelper.Create(baseui.ScrollViewTestList, OnItemClick); + _list = UGListCreateHelper.Create(baseui.ScrollViewTestList); + _list.RegisterItemRender(); baseui.ImgBackGround.color = Color.gray; baseui.BtnTest.onClick.AddListener(OnTestClick); List testDataList = new List(); - for (int i = 0; i < 100; i++) + for (int i = 0; i < 3; i++) { testDataList.Add(new TestData() { Name = $"TestProp:{i}" }); } @@ -40,6 +41,11 @@ public class UILoadUpdate : UITabWindow private void OnBtnETestClick() { + List testDataList = new List(); + for (int i = 0; i < 4; i++) + { + testDataList.Add(new TestData() { Name = $"TestProp:{i}" }); + } Log.Info("Btn E Click"); } @@ -51,10 +57,16 @@ public class UILoadUpdate : UITabWindow private void OnBtnQTestClick() { + List testDataList = new List(); + for (int i = 0; i < 30; i++) + { + testDataList.Add(new TestData() { Name = $"TestProp:{i}" }); + } + + _list.Data = testDataList; Log.Info("Btn Q Click"); } - protected override void OnRegisterEvent(EventListenerProxy proxy) { proxy.AddUIEvent(OnHandleTestUIOpenEevent); @@ -64,10 +76,6 @@ public class UILoadUpdate : UITabWindow { } - private void OnItemClick(TestData obj) - { - } - private void OnTestClick() { GameApp.UI.ShowUISync(); diff --git a/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.bytes b/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.bytes index 07255aff2c9b73cae38d0ea22348887bcb8b1608..ccaba2a75fb30bf516f55369654cb142ed71292d 100644 GIT binary patch delta 28 icmdnRvx{d!ESI^0p@o$J5E*Vv|H;C{^<#1p>kR;Z7YS?t delta 28 hcmdnRvx{d!ESH&rp_vs3nQTn|$-*@0*5oAC8vucu3Dy7r diff --git a/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.hash b/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.hash index 6021167..a0d8145 100644 --- a/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.hash +++ b/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.hash @@ -1 +1 @@ -876efa14 \ No newline at end of file +662b785d \ No newline at end of file diff --git a/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.json b/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.json index 1197bf2..e87df61 100644 --- a/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.json +++ b/Client/Bundles/StandaloneWindows64/DefaultPackage/Simulate/DefaultPackage_Simulate.json @@ -10,7 +10,7 @@ "BuildPipeline": "EditorSimulateBuildPipeline", "PackageName": "DefaultPackage", "PackageVersion": "Simulate", - "PackageNote": "2026/3/26 16:16:14", + "PackageNote": "2026/3/27 18:08:01", "AssetList": [ { "Address": "Click", @@ -162,7 +162,7 @@ "UnityCRC": 0, "FileHash": "9ff2ef11fc95cbce9b51368acd1d4383", "FileCRC": 0, - "FileSize": 55954, + "FileSize": 63498, "Encrypted": false, "Tags": [ "UI" diff --git a/Client/Packages/com.alicizax.unity.ui.extension b/Client/Packages/com.alicizax.unity.ui.extension index 619efa0..f22a4f1 160000 --- a/Client/Packages/com.alicizax.unity.ui.extension +++ b/Client/Packages/com.alicizax.unity.ui.extension @@ -1 +1 @@ -Subproject commit 619efa0d4d2ad6fe818d92bd5235a4c41f9e4cff +Subproject commit f22a4f1efa16de9306f02065016ced084da9ab24 diff --git a/Client/UserSettings/Layouts/default-2022.dwlt b/Client/UserSettings/Layouts/default-2022.dwlt index ea5883c..dc2ac56 100644 --- a/Client/UserSettings/Layouts/default-2022.dwlt +++ b/Client/UserSettings/Layouts/default-2022.dwlt @@ -19,7 +19,7 @@ MonoBehaviour: width: 1920 height: 997 m_ShowMode: 4 - m_Title: Inspector + m_Title: Console m_RootView: {fileID: 4} m_MinSize: {x: 875, y: 300} m_MaxSize: {x: 10000, y: 10000} @@ -40,11 +40,11 @@ MonoBehaviour: m_Position: serializedVersion: 2 x: 0 - y: 337 - width: 247 - height: 610 - m_MinSize: {x: 51, y: 71} - m_MaxSize: {x: 4001, y: 4021} + y: 338 + width: 411 + height: 609 + m_MinSize: {x: 50, y: 50} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 14} m_Panes: - {fileID: 14} @@ -70,12 +70,12 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 247 + width: 411 height: 947 m_MinSize: {x: 100, y: 100} m_MaxSize: {x: 8096, y: 16192} vertical: 1 - controlID: 214 + controlID: 26 draggingID: 0 --- !u!114 &4 MonoBehaviour: @@ -174,7 +174,7 @@ MonoBehaviour: m_MinSize: {x: 400, y: 100} m_MaxSize: {x: 32384, y: 16192} vertical: 0 - controlID: 345 + controlID: 151 draggingID: 0 --- !u!114 &8 MonoBehaviour: @@ -193,10 +193,10 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 247 - height: 337 - m_MinSize: {x: 201, y: 221} - m_MaxSize: {x: 4001, y: 4021} + width: 411 + height: 338 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 16} m_Panes: - {fileID: 16} @@ -219,14 +219,14 @@ MonoBehaviour: - {fileID: 11} m_Position: serializedVersion: 2 - x: 247 + x: 411 y: 0 - width: 416 + width: 293 height: 947 m_MinSize: {x: 100, y: 100} m_MaxSize: {x: 8096, y: 16192} vertical: 1 - controlID: 259 + controlID: 71 draggingID: 0 --- !u!114 &10 MonoBehaviour: @@ -245,10 +245,10 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 416 + width: 293 height: 373 - m_MinSize: {x: 202, y: 221} - m_MaxSize: {x: 4002, y: 4021} + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 17} m_Panes: - {fileID: 17} @@ -271,7 +271,7 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 373 - width: 416 + width: 293 height: 574 m_MinSize: {x: 102, y: 121} m_MaxSize: {x: 4002, y: 4021} @@ -295,9 +295,9 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 663 + x: 704 y: 0 - width: 618 + width: 575 height: 947 m_MinSize: {x: 232, y: 271} m_MaxSize: {x: 10002, y: 10021} @@ -321,9 +321,9 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 1281 + x: 1279 y: 0 - width: 639 + width: 641 height: 947 m_MinSize: {x: 276, y: 71} m_MaxSize: {x: 4001, y: 4021} @@ -353,9 +353,9 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 0 - y: 410 - width: 246 - height: 589 + y: 411 + width: 410 + height: 588 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -408,10 +408,10 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 21 - width: 246 - height: 568 - m_Scale: {x: 0.128125, y: 0.128125} - m_Translation: {x: 123, y: 284} + width: 410 + height: 567 + m_Scale: {x: 0.21354167, y: 0.21354167} + m_Translation: {x: 205, y: 283.5} m_MarginLeft: 0 m_MarginRight: 0 m_MarginTop: 0 @@ -419,12 +419,12 @@ MonoBehaviour: m_LastShownAreaInsideMargins: serializedVersion: 2 x: -960 - y: -2216.5854 + y: -1327.6097 width: 1920 - height: 4433.171 + height: 2655.2195 m_MinimalGUI: 1 - m_defaultScale: 0.128125 - m_LastWindowPixelSize: {x: 246, y: 589} + m_defaultScale: 0.21354167 + m_LastWindowPixelSize: {x: 410, y: 588} m_ClearInEditMode: 1 m_NoCameraWarning: 1 m_LowResolutionForAspectRatios: 01000000000000000000 @@ -522,8 +522,8 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 73 - width: 246 - height: 316 + width: 410 + height: 317 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -578,7 +578,7 @@ MonoBehaviour: collapsed: 0 displayed: 0 snapOffset: {x: 0, y: 0} - snapOffsetDelta: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 25} snapCorner: 1 id: unity-search-toolbar index: 1 @@ -630,7 +630,7 @@ MonoBehaviour: collapsed: 0 displayed: 0 snapOffset: {x: 0, y: 0} - snapOffsetDelta: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 25} snapCorner: 0 id: Scene View/Light Settings index: 0 @@ -656,7 +656,7 @@ MonoBehaviour: collapsed: 0 displayed: 0 snapOffset: {x: 0, y: 0} - snapOffsetDelta: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 25} snapCorner: 0 id: Scene View/Cloth Constraints index: 1 @@ -669,7 +669,7 @@ MonoBehaviour: collapsed: 0 displayed: 0 snapOffset: {x: 0, y: 0} - snapOffsetDelta: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 25} snapCorner: 0 id: Scene View/Cloth Collisions index: 2 @@ -721,7 +721,7 @@ MonoBehaviour: collapsed: 0 displayed: 0 snapOffset: {x: 0, y: 0} - snapOffsetDelta: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 25} snapCorner: 0 id: Scene View/Occlusion Culling index: 3 @@ -734,7 +734,7 @@ MonoBehaviour: collapsed: 0 displayed: 0 snapOffset: {x: 0, y: 0} - snapOffsetDelta: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 25} snapCorner: 0 id: Scene View/Physics Debugger index: 4 @@ -747,7 +747,7 @@ MonoBehaviour: collapsed: 0 displayed: 0 snapOffset: {x: 0, y: 0} - snapOffsetDelta: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 25} snapCorner: 0 id: Scene View/Scene Visibility index: 5 @@ -760,7 +760,7 @@ MonoBehaviour: collapsed: 0 displayed: 0 snapOffset: {x: 0, y: 0} - snapOffsetDelta: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 25} snapCorner: 0 id: Scene View/Particles index: 6 @@ -1056,15 +1056,15 @@ MonoBehaviour: m_OverlaysVisible: 1 m_WindowGUID: f6827acf47ff6e841a7f3bef03f3908f m_Gizmos: 1 - m_OverrideSceneCullingMask: 6917529027641081856 + m_OverrideSceneCullingMask: 0 m_SceneIsLit: 0 m_SceneLighting: 1 - m_2DMode: 0 + m_2DMode: 1 m_isRotationLocked: 0 m_PlayAudio: 0 m_AudioPlay: 0 m_Position: - m_Target: {x: 998.3771, y: 1000.3188, z: 671.488} + m_Target: {x: 1539.4205, y: 557.68085, z: 9.765504} speed: 2 m_Value: {x: 998.3771, y: 1000.3188, z: 671.488} m_RenderMode: 0 @@ -1094,7 +1094,7 @@ MonoBehaviour: m_Size: {x: 0, y: 0} yGrid: m_Fade: - m_Target: 1 + m_Target: 0 speed: 2 m_Value: 1 m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} @@ -1102,9 +1102,9 @@ MonoBehaviour: m_Size: {x: 1, y: 1} zGrid: m_Fade: - m_Target: 0 + m_Target: 1 speed: 2 - m_Value: 0 + m_Value: 1 m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} m_Pivot: {x: 0, y: 0, z: 0} m_Size: {x: 1, y: 1} @@ -1112,17 +1112,17 @@ MonoBehaviour: m_GridAxis: 1 m_gridOpacity: 0.5 m_Rotation: - m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + m_Target: {x: 0, y: 0, z: 0, w: 1} speed: 2 - m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + m_Value: {x: -0.000000006657127, y: 0.00000006869945, z: -0.000000016071727, w: -0.99999994} m_Size: - m_Target: 10 + m_Target: 492.05862 speed: 2 m_Value: 10 m_Ortho: - m_Target: 0 + m_Target: 1 speed: 2 - m_Value: 0 + m_Value: 1 m_CameraSettings: m_Speed: 2 m_SpeedNormalized: 1 @@ -1163,9 +1163,9 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 247 + x: 411 y: 73 - width: 414 + width: 291 height: 352 m_SerializedDataModeController: m_DataMode: 0 @@ -1180,9 +1180,9 @@ MonoBehaviour: m_SceneHierarchy: m_TreeViewState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: - m_LastClickedID: 0 - m_ExpandedIDs: f8faffff + m_SelectedIDs: 84730000 + m_LastClickedID: 29572 + m_ExpandedIDs: acbbffffc2bbffff847300008e73000090730000cc730000de730000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -1226,9 +1226,9 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 247 + x: 411 y: 446 - width: 414 + width: 291 height: 553 m_SerializedDataModeController: m_DataMode: 0 @@ -1260,9 +1260,9 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 663 + x: 704 y: 73 - width: 616 + width: 573 height: 926 m_SerializedDataModeController: m_DataMode: 0 @@ -1285,7 +1285,7 @@ MonoBehaviour: m_SkipHidden: 0 m_SearchArea: 2 m_Folders: - - Assets/Scripts/Hotfix/GameLogic + - Assets/Bundles/UI m_Globs: [] m_OriginalText: m_ImportLogFlags: 0 @@ -1301,7 +1301,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: e48c0000 m_LastClickedID: 36068 - m_ExpandedIDs: 000000007e020000060d0000706a0000726a0000746a0000766a0000786a00007a6a00007c6a00007e6a0000806a0000826a0000846a0000866a0000886a00008a6a00008c6a00008e6a0000906a0000926a0000946a0000966a0000986a00009a6a00009c6a00009e6a0000a06a0000a26a0000a46a0000a66a0000a86a0000aa6a0000ac6a0000ae6a0000b06a0000b26a0000b46a0000b66a0000b86a0000ba6a0000bc6a0000be6a0000c06a0000c26a0000c46a0000c66a0000c86a0000ca6a0000cc6a0000ce6a0000d06a0000d26a0000d46a0000d66a0000d86a0000da6a0000dc6a0000de6a0000e06a0000e26a0000e46a0000e66a0000e86a0000ea6a0000ec6a0000ee6a0000f06a0000f26a0000f46a0000f66a0000f86a0000fa6a0000fc6a0000fe6a0000006b0000026b0000046b0000066b0000086b00000a6b00000c6b00000e6b0000106b0000126b0000146b0000166b0000186b00001a6b00001c6b00001e6b0000206b0000226b0000246b0000266b0000286b00002a6b00002c6b00002e6b0000306b0000326b0000346b0000366b0000386b00003a6b0000 + m_ExpandedIDs: 000000007e020000586a00005a6a00005c6a00005e6a0000606a0000626a0000646a0000666a0000686a00006a6a00006c6a00006e6a0000706a0000726a0000746a0000766a0000786a00007a6a00007c6a00007e6a0000806a0000826a0000846a0000866a0000886a00008a6a00008c6a00008e6a0000906a0000926a0000946a0000966a0000986a00009a6a00009c6a00009e6a0000a06a0000a26a0000a46a0000a66a0000a86a0000aa6a0000ac6a0000ae6a0000b06a0000b26a0000b46a0000b66a0000b86a0000ba6a0000bc6a0000be6a0000c06a0000c26a0000c46a0000c66a0000c86a0000ca6a0000cc6a0000ce6a0000d06a0000d26a0000d46a0000d66a0000d86a0000da6a0000dc6a0000de6a0000e06a0000e26a0000e46a0000e66a0000e86a0000ea6a0000ec6a0000ee6a0000f06a0000f26a0000f46a0000f66a0000f86a0000fa6a0000fc6a0000fe6a0000006b0000026b0000046b0000066b0000086b00000a6b00000c6b00000e6b0000106b0000126b0000146b0000166b0000186b00001a6b00001c6b00001e6b0000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -1326,24 +1326,24 @@ MonoBehaviour: m_Icon: {fileID: 0} m_ResourceFile: m_AssetTreeState: - scrollPos: {x: 0, y: 3008} + scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: ffffffff000000007e020000060d0000706a0000726a0000746a0000766a0000786a00007a6a00007c6a00007e6a0000806a0000826a0000846a0000866a0000886a00008a6a00008c6a00008e6a0000906a0000926a0000946a0000966a0000986a00009a6a00009c6a00009e6a0000a06a0000a26a0000a46a0000a66a0000a86a0000aa6a0000ac6a0000ae6a0000b06a0000b26a0000b46a0000b66a0000b86a0000ba6a0000bc6a0000be6a0000c06a0000c26a0000c46a0000c66a0000c86a0000ca6a0000cc6a0000ce6a0000d06a0000d26a0000d46a0000d66a0000d86a0000da6a0000dc6a0000de6a0000e06a0000e26a0000e46a0000e66a0000e86a0000ea6a0000ec6a0000ee6a0000f06a0000f26a0000f46a0000f66a0000f86a0000fa6a0000fc6a0000fe6a0000006b0000026b0000046b0000066b0000086b00000a6b00000c6b00000e6b0000106b0000126b0000146b0000166b0000186b00001a6b00001c6b00001e6b0000206b0000226b0000246b0000266b0000286b00002a6b00002c6b00002e6b0000306b0000326b0000346b0000366b0000386b00003a6b0000126d0000ffffff7f + m_ExpandedIDs: ffffffff000000007e020000586a00005a6a00005c6a00005e6a0000606a0000626a0000646a0000666a0000686a00006a6a00006c6a00006e6a0000706a0000726a0000746a0000766a0000786a00007a6a00007c6a00007e6a0000806a0000826a0000846a0000866a0000886a00008a6a00008c6a00008e6a0000906a0000926a0000946a0000966a0000986a00009a6a00009c6a00009e6a0000a06a0000a26a0000a46a0000a66a0000a86a0000aa6a0000ac6a0000ae6a0000b06a0000b26a0000b46a0000b66a0000b86a0000ba6a0000bc6a0000be6a0000c06a0000c26a0000c46a0000c66a0000c86a0000ca6a0000cc6a0000d06a0000d26a0000d46a0000d66a0000d86a0000da6a0000dc6a0000de6a0000e06a0000e26a0000e46a0000e66a0000e86a0000ea6a0000ec6a0000ee6a0000f06a0000f26a0000f46a0000f66a0000f86a0000fa6a0000fc6a0000fe6a0000006b0000026b0000046b0000066b0000086b00000a6b00000c6b00000e6b0000106b0000126b0000146b0000166b0000186b00001a6b00001c6b00001e6b00003a6d0000566d0000326f0000ffffff7f m_RenameOverlay: m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: + m_Name: TestScrollItemBinder + m_OriginalName: TestScrollItemBinder m_EditFieldRect: serializedVersion: 2 x: 0 y: 0 width: 0 height: 0 - m_UserData: 0 + m_UserData: 28438 m_IsWaitingForDelay: 0 m_IsRenaming: 0 - m_OriginalEventType: 11 + m_OriginalEventType: 0 m_IsRenamingFilename: 1 m_ClientGUIView: {fileID: 12} m_SearchString: @@ -1405,9 +1405,9 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: -30719 - y: -31970 - width: 638 + x: 1279 + y: 73 + width: 640 height: 926 m_SerializedDataModeController: m_DataMode: 0