From f2df6b9497b32cb854b108ce63948a393a512f98 Mon Sep 17 00:00:00 2001 From: shenjianxing <”315615051@qq.com“> Date: Sat, 8 Feb 2025 10:59:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=9A=E7=94=A8=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Art/UIPrefab/UIImageTip.prefab | 469 +++++++++++++++++- .../Scenes/TestUIPanels/TestUIImageTip.unity | 340 +------------ Assets/Scripts/Actions/ActionHelper.cs | 7 + Assets/Scripts/Actions/ImageTipAction.cs | 88 ++++ Assets/Scripts/Actions/ImageTipAction.cs.meta | 11 + Assets/Scripts/Item/UIDragItem.cs | 65 +++ Assets/Scripts/Item/UIDragItem.cs.meta | 11 + Assets/Scripts/UI/UIImageTip.Designer.cs | 14 +- Assets/Scripts/UI/UIImageTip.cs | 99 +++- Assets/Scripts/Xml/XmlParser.cs | 26 + Data/Image/骨刀.png | Bin 0 -> 33279 bytes Doc/Xml配置文档.xml | 5 + 12 files changed, 767 insertions(+), 368 deletions(-) create mode 100644 Assets/Scripts/Actions/ImageTipAction.cs create mode 100644 Assets/Scripts/Actions/ImageTipAction.cs.meta create mode 100644 Assets/Scripts/Item/UIDragItem.cs create mode 100644 Assets/Scripts/Item/UIDragItem.cs.meta create mode 100644 Data/Image/骨刀.png diff --git a/Assets/Art/UIPrefab/UIImageTip.prefab b/Assets/Art/UIPrefab/UIImageTip.prefab index 29086c1d..f031b483 100644 --- a/Assets/Art/UIPrefab/UIImageTip.prefab +++ b/Assets/Art/UIPrefab/UIImageTip.prefab @@ -1,5 +1,312 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &30833657531096789 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7283076153574743914} + - component: {fileID: 8190097409874675749} + - component: {fileID: 8644373798225081904} + - component: {fileID: 3944841449389482800} + - component: {fileID: 6019649329575978101} + m_Layer: 0 + m_Name: Loading + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7283076153574743914 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30833657531096789} + 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: 457338256681516575} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 51, y: 51} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8190097409874675749 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30833657531096789} + m_CullTransparentMesh: 1 +--- !u!114 &8644373798225081904 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30833657531096789} + 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: 21300000, guid: dd4271b73b405d94db60e4ba44aff1a5, type: 3} + m_Type: 0 + 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 &3944841449389482800 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30833657531096789} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: Loading + CustomComment: + mComponentName: UnityEngine.UI.Image +--- !u!114 &6019649329575978101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 30833657531096789} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3} + m_Name: + m_EditorClassIdentifier: + updateType: 0 + isSpeedBased: 0 + hasOnStart: 0 + hasOnPlay: 0 + hasOnUpdate: 0 + hasOnStepComplete: 0 + hasOnComplete: 0 + hasOnTweenCreated: 0 + hasOnRewind: 0 + onStart: + m_PersistentCalls: + m_Calls: [] + onPlay: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onStepComplete: + m_PersistentCalls: + m_Calls: [] + onComplete: + m_PersistentCalls: + m_Calls: [] + onTweenCreated: + m_PersistentCalls: + m_Calls: [] + onRewind: + m_PersistentCalls: + m_Calls: [] + targetIsSelf: 1 + targetGO: {fileID: 0} + tweenTargetIsTargetGO: 1 + delay: 0 + duration: 1 + easeType: 1 + easeCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + loopType: 2 + loops: -1 + id: + isRelative: 0 + isFrom: 0 + isIndependentUpdate: 0 + autoKill: 1 + autoGenerate: 1 + isActive: 1 + isValid: 1 + target: {fileID: 7283076153574743914} + animationType: 4 + targetType: 11 + forcedTargetType: 0 + autoPlay: 1 + useTargetAsV3: 0 + endValueFloat: 0 + endValueV3: {x: 0, y: 0, z: -360} + endValueV2: {x: 0, y: 0} + endValueColor: {r: 1, g: 1, b: 1, a: 1} + endValueString: + endValueRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + endValueTransform: {fileID: 0} + optionalBool0: 0 + optionalBool1: 0 + optionalFloat0: 0 + optionalInt0: 0 + optionalRotationMode: 1 + optionalScrambleMode: 0 + optionalShakeRandomnessMode: 0 + optionalString: +--- !u!1 &4357527744309548703 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3179436582214181176} + - component: {fileID: 1201339466389057861} + - component: {fileID: 7281622459385885556} + - component: {fileID: 6226203286200918880} + - component: {fileID: 7387790493629708447} + m_Layer: 0 + m_Name: Img + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3179436582214181176 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4357527744309548703} + 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: 7679583515489790641} + m_Father: {fileID: 457338256681516575} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1201339466389057861 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4357527744309548703} + m_CullTransparentMesh: 1 +--- !u!114 &7281622459385885556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4357527744309548703} + 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: 0} + m_Type: 0 + 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 &6226203286200918880 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4357527744309548703} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: Img + CustomComment: + mComponentName: UnityEngine.UI.Image +--- !u!114 &7387790493629708447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4357527744309548703} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ddbdb059a0308e40b50b8affd380b70, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &4848351076784976432 GameObject: m_ObjectHideFlags: 0 @@ -11,8 +318,9 @@ GameObject: - component: {fileID: 6979886525316513726} - component: {fileID: 6280186421294349216} - component: {fileID: 3487113180645688331} + - component: {fileID: 204670043180775299} m_Layer: 0 - m_Name: Image + m_Name: Bg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -75,6 +383,22 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!114 &204670043180775299 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4848351076784976432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: + CustomComment: + mComponentName: UnityEngine.UI.Image --- !u!1 &5835930990146443873 GameObject: m_ObjectHideFlags: 0 @@ -105,6 +429,8 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6979886525316513726} + - {fileID: 3179436582214181176} + - {fileID: 7283076153574743914} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -124,3 +450,144 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 76e35f1886b37234dbf8284499e43f29, type: 3} m_Name: m_EditorClassIdentifier: + Bg: {fileID: 3487113180645688331} + Img: {fileID: 7281622459385885556} + CloseBtn: {fileID: 8060087292099783694} + Loading: {fileID: 8644373798225081904} +--- !u!1 &6949064777284943882 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7679583515489790641} + - component: {fileID: 570271698403392561} + - component: {fileID: 7515914936111753226} + - component: {fileID: 8060087292099783694} + - component: {fileID: 2170269065230433368} + m_Layer: 0 + m_Name: CloseBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7679583515489790641 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6949064777284943882} + 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: 3179436582214181176} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -14, y: -14} + m_SizeDelta: {x: 28, y: 28} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &570271698403392561 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6949064777284943882} + m_CullTransparentMesh: 1 +--- !u!114 &7515914936111753226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6949064777284943882} + 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: 21300000, guid: 9225a255e7db0f94992879e3437ed1ad, type: 3} + m_Type: 0 + 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 &8060087292099783694 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6949064777284943882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, 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: 7515914936111753226} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &2170269065230433368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6949064777284943882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: + CustomComment: + mComponentName: UnityEngine.UI.Button diff --git a/Assets/Scenes/TestUIPanels/TestUIImageTip.unity b/Assets/Scenes/TestUIPanels/TestUIImageTip.unity index 1244264e..8674cba8 100644 --- a/Assets/Scenes/TestUIPanels/TestUIImageTip.unity +++ b/Assets/Scenes/TestUIPanels/TestUIImageTip.unity @@ -123,140 +123,6 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &22812770 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 22812771} - - component: {fileID: 22812773} - - component: {fileID: 22812772} - m_Layer: 0 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &22812771 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 22812770} - 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: 1278905444} - 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!114 &22812772 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 22812770} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: Button - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 24 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &22812773 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 22812770} - m_CullTransparentMesh: 1 --- !u!1 &96677998 GameObject: m_ObjectHideFlags: 0 @@ -564,203 +430,6 @@ Transform: m_Children: [] m_Father: {fileID: 700073059} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1197716458 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1197716459} - - component: {fileID: 1197716461} - - component: {fileID: 1197716460} - m_Layer: 0 - m_Name: Img - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1197716459 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1197716458} - 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: 1278905444} - m_Father: {fileID: 5728886842189274064} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 100, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1197716460 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1197716458} - 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: 0} - m_Type: 0 - 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!222 &1197716461 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1197716458} - m_CullTransparentMesh: 1 ---- !u!1 &1278905443 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1278905444} - - component: {fileID: 1278905447} - - component: {fileID: 1278905446} - - component: {fileID: 1278905445} - m_Layer: 0 - m_Name: CloseBtn - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1278905444 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278905443} - 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: 22812771} - m_Father: {fileID: 1197716459} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 160, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1278905445 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278905443} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, 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: 1278905446} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &1278905446 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278905443} - 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!222 &1278905447 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1278905443} - m_CullTransparentMesh: 1 --- !u!1 &1313789980 GameObject: m_ObjectHideFlags: 0 @@ -1204,20 +873,13 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4848351076784976432, guid: 8ef4844018ab21848a5b9894fe23938a, type: 3} - propertyPath: m_Name - value: Bg - objectReference: {fileID: 0} - target: {fileID: 5835930990146443873, guid: 8ef4844018ab21848a5b9894fe23938a, type: 3} propertyPath: m_Name value: UIImageTip objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: - - targetCorrespondingSourceObject: {fileID: 457338256681516575, guid: 8ef4844018ab21848a5b9894fe23938a, type: 3} - insertIndex: -1 - addedObject: {fileID: 1197716459} + m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 8ef4844018ab21848a5b9894fe23938a, type: 3} --- !u!224 &5728886842189274064 stripped diff --git a/Assets/Scripts/Actions/ActionHelper.cs b/Assets/Scripts/Actions/ActionHelper.cs index b7eab951..c760c57b 100644 --- a/Assets/Scripts/Actions/ActionHelper.cs +++ b/Assets/Scripts/Actions/ActionHelper.cs @@ -21,6 +21,7 @@ public class ActionHelper { "UICameraSwitch", typeof(QFramework.Example.UICameraSwitch) }, { "UIInstruction", typeof(QFramework.Example.UIInstruction) }, { "UIScore", typeof(QFramework.Example.UIScore) }, + { "UIImageTip", typeof(QFramework.Example.UIImageTip) }, }; @@ -246,6 +247,12 @@ public class ActionHelper var dictAction = (XMLTool.InputAction)act; return QFramework.InputAction.Allocate(dictAction.data); } + case "ImageTip": + { + var dictAction = (XMLTool.DictionaryAction)act; + return QFramework.ImageTipAction.Allocate(dictAction.args); + } + default: Debug.LogError($"ûҵAction{act.Type}"); break; diff --git a/Assets/Scripts/Actions/ImageTipAction.cs b/Assets/Scripts/Actions/ImageTipAction.cs new file mode 100644 index 00000000..34c91a8d --- /dev/null +++ b/Assets/Scripts/Actions/ImageTipAction.cs @@ -0,0 +1,88 @@ +using QFramework.Example; +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace QFramework +{ + internal class ImageTipAction : IAction + { + public System.Action OnFinished { get; set; } + + + private ImageTipAction() + { + } + + private static readonly SimpleObjectPool mPool = + new SimpleObjectPool(() => new ImageTipAction(), null, 10); + Dictionary datas; + public static ImageTipAction Allocate(Dictionary datas, System.Action OnFinished = null) + { + var retNode = mPool.Allocate(); + retNode.ActionID = ActionKit.ID_GENERATOR++; + retNode.Deinited = false; + retNode.Reset(); + retNode.OnFinished = OnFinished; + retNode.datas = datas; + return retNode; + } + + + public ulong ActionID { get; set; } + public ActionStatus Status { get; set; } + + public void OnStart() + { + UIImageTipData data = new UIImageTipData(); + data.imgPath = datas.ContainsKey("path") ? datas["path"] : string.Empty; + if (datas.ContainsKey("size")) + { + data.size = Utility.GetVector2FromStrArray(datas["size"]); + } + if (datas.ContainsKey("isDrag")) + { + bool.TryParse(datas["isDrag"], out data.isDrag); + } + if (datas.ContainsKey("position")) + { + data.position = Utility.GetVector2FromStrArray(datas["position"]); + } + UIKit.OpenPanelAsync(uiData: data, canvasLevel: UILevel.PopUI).ToAction().StartGlobal(() => + { + this.Finish(); + }); + } + + public void OnExecute(float dt) + { + + } + + public void OnFinish() + { + } + + public void Reset() + { + Status = ActionStatus.NotStart; + Paused = false; + } + + public bool Paused { get; set; } + + public void Deinit() + { + if (!Deinited) + { + OnFinished = null; + Deinited = true; + mPool.Recycle(this); + } + } + + public bool Deinited { get; set; } + } + + +} \ No newline at end of file diff --git a/Assets/Scripts/Actions/ImageTipAction.cs.meta b/Assets/Scripts/Actions/ImageTipAction.cs.meta new file mode 100644 index 00000000..11dab0df --- /dev/null +++ b/Assets/Scripts/Actions/ImageTipAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6e6cb13cd02a554484463cd78708913 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Item/UIDragItem.cs b/Assets/Scripts/Item/UIDragItem.cs new file mode 100644 index 00000000..12f9da2c --- /dev/null +++ b/Assets/Scripts/Item/UIDragItem.cs @@ -0,0 +1,65 @@ +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +public class UIDragItem : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler +{ + private RectTransform rectTransform; // UI ͼƬ RectTransform + private CanvasGroup canvasGroup; // CanvasGroup ڴקʱ͸ + private Vector2 startPosition; // קʼʱijʼλ + + void Start() + { + // ȡ RectTransform + rectTransform = GetComponent(); + + // CanvasGroup ڣ + canvasGroup = GetComponent(); + if (canvasGroup == null) + { + canvasGroup = gameObject.AddComponent(); + } + } + + // ʼקʱ + public void OnBeginDrag(PointerEventData eventData) + { + // ¼ʼλ + startPosition = rectTransform.anchoredPosition; + + // ͸ȣʾק״̬ + canvasGroup.alpha = 0.6f; + + // Raycast Ŀֹ꣬קʱ赲 UI ¼ + canvasGroup.blocksRaycasts = false; + } + + // קе + public void OnDrag(PointerEventData eventData) + { + // ĻתΪ UI + Vector2 screenPoint = eventData.position; + RectTransformUtility.ScreenPointToLocalPointInRectangle( + rectTransform.parent as RectTransform, // Canvas Panel + screenPoint, // Ļ + eventData.pressEventCamera, // Canvas Ⱦģʽ + out Vector2 localPoint // ı + ); + + // UI ͼƬλ + rectTransform.anchoredPosition = localPoint; + } + + // קʱ + public void OnEndDrag(PointerEventData eventData) + { + // ָ͸ + canvasGroup.alpha = 1.0f; + + // Raycast Ŀ + canvasGroup.blocksRaycasts = true; + + // ҪԽ UI ͼƬõʼλ + // rectTransform.anchoredPosition = startPosition; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Item/UIDragItem.cs.meta b/Assets/Scripts/Item/UIDragItem.cs.meta new file mode 100644 index 00000000..85242e2c --- /dev/null +++ b/Assets/Scripts/Item/UIDragItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ddbdb059a0308e40b50b8affd380b70 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/UIImageTip.Designer.cs b/Assets/Scripts/UI/UIImageTip.Designer.cs index e5216242..8ba777d9 100644 --- a/Assets/Scripts/UI/UIImageTip.Designer.cs +++ b/Assets/Scripts/UI/UIImageTip.Designer.cs @@ -5,16 +5,28 @@ using QFramework; namespace QFramework.Example { - // Generate Id:fccb4559-e4f7-489f-9594-d808ed76c7ae + // Generate Id:57bed04b-0792-4429-9515-a01b9e291182 public partial class UIImageTip { public const string Name = "UIImageTip"; + [SerializeField] + public UnityEngine.UI.Image Bg; + [SerializeField] + public UnityEngine.UI.Image Img; + [SerializeField] + public UnityEngine.UI.Button CloseBtn; + [SerializeField] + public UnityEngine.UI.Image Loading; private UIImageTipData mPrivateData = null; protected override void ClearUIComponents() { + Bg = null; + Img = null; + CloseBtn = null; + Loading = null; mData = null; } diff --git a/Assets/Scripts/UI/UIImageTip.cs b/Assets/Scripts/UI/UIImageTip.cs index 470d2bcf..167aea65 100644 --- a/Assets/Scripts/UI/UIImageTip.cs +++ b/Assets/Scripts/UI/UIImageTip.cs @@ -1,34 +1,79 @@ using UnityEngine; using UnityEngine.UI; using QFramework; +using UnityEngine.EventSystems; +using System.Drawing; +using static UnityEditor.Progress; +using DG.Tweening; namespace QFramework.Example { - public class UIImageTipData : UIPanelData - { - } - public partial class UIImageTip : UIPanel - { - protected override void OnInit(IUIData uiData = null) - { - mData = uiData as UIImageTipData ?? new UIImageTipData(); - // please add init code here - } - - protected override void OnOpen(IUIData uiData = null) - { - } - - protected override void OnShow() - { - } - - protected override void OnHide() - { - } - - protected override void OnClose() - { - } - } + public class UIImageTipData : UIPanelData + { + public bool isDrag = true; + public Vector2 size; + public string imgPath; + public Vector2 position; + } + public partial class UIImageTip : UIPanel + { + DOTweenAnimation loadingAnim; + protected override void OnInit(IUIData uiData = null) + { + loadingAnim = Loading.GetComponent(); + CloseBtn.onClick.AddListener(() => + { + Hide(); + }); + } + + + + protected override void OnOpen(IUIData uiData = null) + { + mData = uiData as UIImageTipData ?? new UIImageTipData(); + Loading.gameObject.SetActive(true); + loadingAnim.DOPlay(); + Img.gameObject.SetActive(false); + Img.GetComponent().anchoredPosition = Vector2.zero; + ResLoader loader = ResLoader.Allocate(); + var localImageUrl = Global.imagePath + mData.imgPath; + loader.Add2Load(localImageUrl.ToNetImageResName(), + (bool success, IRes res) => + { + if (success) + { + Img.sprite = Utility.GetSprite(res.Asset as Texture2D); + if (mData.size == default) + { + Img.SetNativeSize(); + } + else + { + Img.rectTransform.sizeDelta = mData.size; + } + Img.gameObject.SetActive(true); + loadingAnim.DOPause(); + Loading.gameObject.SetActive(false); + } + }); + Img.GetComponent().enabled = mData.isDrag; + Img.rectTransform.anchoredPosition = mData.position; + loader.LoadAsync(); + } + + protected override void OnShow() + { + } + + protected override void OnHide() + { + } + + protected override void OnClose() + { + } + + + } } diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index 44ab774b..c6fcf0df 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -1252,6 +1252,32 @@ namespace XMLTool newAction = act; } break; + case "ImageTip": + { + var act = new DictionaryAction(); + XAttribute path = action.Attribute("path"); + if (path != null) + { + act.args.Add("path", path.Value); + } + XAttribute size = action.Attribute("size"); + if (size != null) + { + act.args.Add("size", size.Value); + } + XAttribute isDrag = action.Attribute("isDrag"); + if (isDrag != null) + { + act.args.Add("isDrag", isDrag.Value); + } + XAttribute position = action.Attribute("position"); + if (position != null) + { + act.args.Add("position", position.Value); + } + newAction = act; + } + break; default: newAction = new Action(); break; diff --git a/Data/Image/骨刀.png b/Data/Image/骨刀.png new file mode 100644 index 0000000000000000000000000000000000000000..7be3ed3981caeffed29dc5321a577a2528d8b944 GIT binary patch literal 33279 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 O4;>9d^-_q#v;P4s>tLe* literal 0 HcmV?d00001 diff --git a/Doc/Xml配置文档.xml b/Doc/Xml配置文档.xml index 892386fb..c28c9ffd 100644 --- a/Doc/Xml配置文档.xml +++ b/Doc/Xml配置文档.xml @@ -148,6 +148,11 @@ + +