From e2a0db671b41048f3f1a372e49f13b9c1d15fb7e Mon Sep 17 00:00:00 2001 From: zxl Date: Mon, 4 Nov 2024 17:02:42 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=B7=BB=E5=8A=A0=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=88=97=E8=A1=A8ui=E5=8F=8A=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DemoGame/GameRes/Config/TaskListData.json | 1 + .../GameRes/Config/TaskListData.json.meta | 7 + .../GameRes/UIPanel/UITaskList.prefab | 734 ++++++++++++++++++ .../GameRes/UIPanel/UITaskList.prefab.meta | 7 + .../GameScript/Editor/TaskListEditor.cs | 60 ++ .../GameScript/Editor/TaskListEditor.cs.meta | 3 + .../GameScript/Hotfix/Data/TaskListData.cs | 111 +++ .../Hotfix/Data/TaskListData.cs.meta | 11 + .../Hotfix/Helper/AnimatorHelper.cs | 58 ++ .../Hotfix/Helper/AnimatorHelper.cs.meta | 3 + Assets/DemoGame/GameScript/Hotfix/Other.meta | 3 + .../Hotfix/Other/TaskListManager.cs | 32 + .../Hotfix/Other/TaskListManager.cs.meta | 3 + .../GameScript/Hotfix/UI/Logic/TaskListUI.cs | 29 + .../Hotfix/UI/Logic/TaskListUI.cs.meta | 3 + .../DemoGame/GameScript/Hotfix/UI/UIType.cs | 3 +- 16 files changed, 1067 insertions(+), 1 deletion(-) create mode 100644 Assets/DemoGame/GameRes/Config/TaskListData.json create mode 100644 Assets/DemoGame/GameRes/Config/TaskListData.json.meta create mode 100644 Assets/DemoGame/GameRes/UIPanel/UITaskList.prefab create mode 100644 Assets/DemoGame/GameRes/UIPanel/UITaskList.prefab.meta create mode 100644 Assets/DemoGame/GameScript/Editor/TaskListEditor.cs create mode 100644 Assets/DemoGame/GameScript/Editor/TaskListEditor.cs.meta create mode 100644 Assets/DemoGame/GameScript/Hotfix/Data/TaskListData.cs create mode 100644 Assets/DemoGame/GameScript/Hotfix/Data/TaskListData.cs.meta create mode 100644 Assets/DemoGame/GameScript/Hotfix/Helper/AnimatorHelper.cs create mode 100644 Assets/DemoGame/GameScript/Hotfix/Helper/AnimatorHelper.cs.meta create mode 100644 Assets/DemoGame/GameScript/Hotfix/Other.meta create mode 100644 Assets/DemoGame/GameScript/Hotfix/Other/TaskListManager.cs create mode 100644 Assets/DemoGame/GameScript/Hotfix/Other/TaskListManager.cs.meta create mode 100644 Assets/DemoGame/GameScript/Hotfix/UI/Logic/TaskListUI.cs create mode 100644 Assets/DemoGame/GameScript/Hotfix/UI/Logic/TaskListUI.cs.meta diff --git a/Assets/DemoGame/GameRes/Config/TaskListData.json b/Assets/DemoGame/GameRes/Config/TaskListData.json new file mode 100644 index 0000000..16aa426 --- /dev/null +++ b/Assets/DemoGame/GameRes/Config/TaskListData.json @@ -0,0 +1 @@ +{"ChildData":[{"Title":"大众","Type":0,"parent":null,"ChildData":[{"Title":"宝来","Type":0,"parent":null,"ChildData":[]},{"Title":"帕沙特","Type":0,"parent":null,"ChildData":[]}]},{"Title":"长安","Type":0,"parent":null,"ChildData":[{"Title":"cs35","Type":0,"parent":null,"ChildData":[]},{"Title":"cs55","Type":0,"parent":null,"ChildData":[]},{"Title":"cs75","Type":0,"parent":null,"ChildData":[]}]},{"Title":"吉利","Type":0,"parent":null,"ChildData":[{"Title":"星瑞","Type":0,"parent":null,"ChildData":[]},{"Title":"几何","Type":0,"parent":null,"ChildData":[]}]}],"name":"","hideFlags":0} \ No newline at end of file diff --git a/Assets/DemoGame/GameRes/Config/TaskListData.json.meta b/Assets/DemoGame/GameRes/Config/TaskListData.json.meta new file mode 100644 index 0000000..2d4ecdd --- /dev/null +++ b/Assets/DemoGame/GameRes/Config/TaskListData.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d883d04d8340ee140b99ac78b6abdd9d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DemoGame/GameRes/UIPanel/UITaskList.prefab b/Assets/DemoGame/GameRes/UIPanel/UITaskList.prefab new file mode 100644 index 0000000..2ee62ab --- /dev/null +++ b/Assets/DemoGame/GameRes/UIPanel/UITaskList.prefab @@ -0,0 +1,734 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &311066014808189486 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4954329587255839912} + - component: {fileID: 2399521257739261443} + - component: {fileID: 2884290648702530676} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4954329587255839912 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 311066014808189486} + 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: 7585729512454890244} + m_Father: {fileID: 7443851216887227323} + 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!222 &2399521257739261443 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 311066014808189486} + m_CullTransparentMesh: 1 +--- !u!114 &2884290648702530676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 311066014808189486} + 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 &1741732349735882544 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6713236928343127192} + - component: {fileID: 4720684170050229234} + - component: {fileID: 4659719696512979737} + m_Layer: 5 + m_Name: txt_State + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6713236928343127192 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741732349735882544} + 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: 7443851216887227323} + 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: -71.365, y: 0} + m_SizeDelta: {x: 142.73, y: 64} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4720684170050229234 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741732349735882544} + m_CullTransparentMesh: 1 +--- !u!114 &4659719696512979737 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741732349735882544} + 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: New Text + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: abc67234d32ea1245953cb5fd5b92b8c, type: 2} + m_sharedMaterial: {fileID: -6470419919974777511, guid: abc67234d32ea1245953cb5fd5b92b8c, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, 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: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 4 + 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!1 &3249870284026512454 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7443851216887227323} + - component: {fileID: 8379031988395096648} + - component: {fileID: 9209818406980085673} + m_Layer: 5 + m_Name: tog_Item + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7443851216887227323 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3249870284026512454} + 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: 4954329587255839912} + - {fileID: 5218366189529408182} + - {fileID: 6713236928343127192} + m_Father: {fileID: 1179718432570443799} + 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: 381.63, y: 61.5574} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8379031988395096648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3249870284026512454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, 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: 0 + m_TargetGraphic: {fileID: 2884290648702530676} + toggleTransition: 1 + graphic: {fileID: 7635033271844606582} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 0 +--- !u!114 &9209818406980085673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3249870284026512454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 786137fdc2d9480690499e6f4964e8b2, type: 3} + m_Name: + m_EditorClassIdentifier: + Datas: + - name: txt_Name + go: {fileID: 5612515325287597776} + - name: txt_State + go: {fileID: 1741732349735882544} + - name: tog_Item + go: {fileID: 3249870284026512454} +--- !u!1 &3397518291152337347 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4933003019792527182} + - component: {fileID: 2509825512816614521} + - component: {fileID: 550302411564123129} + - component: {fileID: 291995725713535194} + - component: {fileID: -8407002671156803367} + m_Layer: 5 + m_Name: UITaskList + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4933003019792527182 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3397518291152337347} + 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: 1179718432570443799} + m_Father: {fileID: 0} + 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!222 &2509825512816614521 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3397518291152337347} + m_CullTransparentMesh: 1 +--- !u!223 &550302411564123129 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3397518291152337347} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &291995725713535194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3397518291152337347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 119 +--- !u!114 &-8407002671156803367 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3397518291152337347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 786137fdc2d9480690499e6f4964e8b2, type: 3} + m_Name: + m_EditorClassIdentifier: + Datas: + - name: tog_Item + go: {fileID: 3249870284026512454} +--- !u!1 &5553544550694430959 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1179718432570443799} + - component: {fileID: 2315791538494351641} + - component: {fileID: 1181104127865993945} + - component: {fileID: 6121681038155403841} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1179718432570443799 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5553544550694430959} + 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: 7443851216887227323} + m_Father: {fileID: 4933003019792527182} + 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: -769.19, y: 0} + m_SizeDelta: {x: 381.6253, y: 681} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2315791538494351641 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5553544550694430959} + m_CullTransparentMesh: 1 +--- !u!114 &1181104127865993945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5553544550694430959} + 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.6981132, g: 0.6750623, b: 0.6750623, 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 &6121681038155403841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5553544550694430959} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &5612515325287597776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5218366189529408182} + - component: {fileID: 7690918001141164077} + - component: {fileID: 7797916726903866960} + m_Layer: 5 + m_Name: txt_Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5218366189529408182 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5612515325287597776} + 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: 7443851216887227323} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 119.44861, y: 0} + m_SizeDelta: {x: 238.8972, y: 64} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7690918001141164077 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5612515325287597776} + m_CullTransparentMesh: 1 +--- !u!114 &7797916726903866960 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5612515325287597776} + 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: New Text + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: abc67234d32ea1245953cb5fd5b92b8c, type: 2} + m_sharedMaterial: {fileID: -6470419919974777511, guid: abc67234d32ea1245953cb5fd5b92b8c, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, 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: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + 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!1 &9191915601774904182 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7585729512454890244} + - component: {fileID: 470677810979056877} + - component: {fileID: 7635033271844606582} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7585729512454890244 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9191915601774904182} + 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: 4954329587255839912} + 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!222 &470677810979056877 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9191915601774904182} + m_CullTransparentMesh: 1 +--- !u!114 &7635033271844606582 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9191915601774904182} + 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.990566, g: 0.54668033, b: 0.54668033, 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: 10907, 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 diff --git a/Assets/DemoGame/GameRes/UIPanel/UITaskList.prefab.meta b/Assets/DemoGame/GameRes/UIPanel/UITaskList.prefab.meta new file mode 100644 index 0000000..af6abab --- /dev/null +++ b/Assets/DemoGame/GameRes/UIPanel/UITaskList.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b40a730557908cb42ba63080a9924ef4 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DemoGame/GameScript/Editor/TaskListEditor.cs b/Assets/DemoGame/GameScript/Editor/TaskListEditor.cs new file mode 100644 index 0000000..9a8eeaf --- /dev/null +++ b/Assets/DemoGame/GameScript/Editor/TaskListEditor.cs @@ -0,0 +1,60 @@ +using System.Collections.Generic; +using System.IO; +using Newtonsoft.Json; +using Sirenix.OdinInspector; +using Sirenix.OdinInspector.Editor; +using UnityEditor; +using UnityEngine; +using UnityEngine.Serialization; +using ZC; + +namespace ZEditor +{ + public class TaskListEditor : OdinEditorWindow + { + [MenuItem("Tool/任务编辑面板")] + private static void OpenWindow() + { + GetWindow().Show(); + } + + [FolderPath] public string savePath = "Assets/DemoGame/GameRes/Config"; + + public string saveName = "TaskListData"; + + string filePath => $"{Application.dataPath}/DemoGame/GameRes/Config/{saveName}.json"; + + public List Datas = new List(); + + [Button("加载")] + void LoadData(string fileName = "TaskListData") + { + var json = File.ReadAllText(filePath); + var loadAssetAtPath = JsonConvert.DeserializeObject(json); + Datas = loadAssetAtPath.ChildData; + } + + [Button("保存")] + void SaveData() + { + if (string.IsNullOrEmpty(savePath)) + { + Debug.LogError("请填入正确路径!"); + return; + } + + if (string.IsNullOrEmpty(saveName)) + { + Debug.LogError("请填入正确文件名!"); + return; + } + + TaskListDatas datas = new TaskListDatas(); + datas.ChildData = Datas; + var json = JsonConvert.SerializeObject(datas); + File.WriteAllText(filePath, json); + + AssetDatabase.Refresh(); + } + } +} \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Editor/TaskListEditor.cs.meta b/Assets/DemoGame/GameScript/Editor/TaskListEditor.cs.meta new file mode 100644 index 0000000..2cf3fc8 --- /dev/null +++ b/Assets/DemoGame/GameScript/Editor/TaskListEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a1f288ff48dd40238764e80699d9590d +timeCreated: 1730687395 \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Hotfix/Data/TaskListData.cs b/Assets/DemoGame/GameScript/Hotfix/Data/TaskListData.cs new file mode 100644 index 0000000..da9fddf --- /dev/null +++ b/Assets/DemoGame/GameScript/Hotfix/Data/TaskListData.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using Sirenix.OdinInspector; +using UnityEngine; + +namespace ZC +{ + [System.Serializable] + public enum TaskListType + { + δ, + ǰ, + , + , + } + + [System.Serializable] + public class TaskListData + { + public string Title; + [LabelText("")] public TaskListType Type; + [LabelText("ڵ")] public TaskListData parent; + public List ChildData = new List(); + } + + [System.Serializable] + public class TaskListDatas + { + public List ChildData = new List(); + + // public Action> callback; + + public void Init() + { + SetParent(ChildData); + } + + void SetParent(List data, TaskListData parent = null) + { + for (var i = 0; i < data.Count; i++) + { + data[i].parent = parent; + if (data[i].ChildData.Count > 0) + { + SetParent(data[i].ChildData, data[i]); + } + } + } + + public void SetState(string title, TaskListType type) + { + TaskListData trueData = null; + Check(ChildData, title, ref trueData); + List listDatas = new List(); + ReData(trueData, ref listDatas); + listDatas.Reverse(); + + switch (type) + { + case TaskListType.δ: + trueData.Type = TaskListType.δ; + break; + case TaskListType.ǰ: + for (var i = 0; i < listDatas.Count; i++) + { + if (i == listDatas.Count - 1) + listDatas[i].Type = TaskListType.ǰ; + else + listDatas[i].Type = TaskListType.; + } + break; + case TaskListType.: + trueData.Type = TaskListType.; + break; + case TaskListType.: + for (var i = 0; i < listDatas.Count; i++) + { + listDatas[i].Type = TaskListType.; + } + break; + default: + throw new ArgumentOutOfRangeException(nameof(type), type, null); + } + // callback?.Invoke(listDatas); + } + + private void Check(List data, string title, ref TaskListData trueData) + { + for (var i = 0; i < data.Count; i++) + { + if (data[i].Title == title) + { + trueData = data[i]; + return; + } + + if (data[i].ChildData.Count > 0) + Check(data[i].ChildData, title, ref trueData); + } + } + + private void ReData(TaskListData data, ref List datas) + { + datas.Add(data); + if (data.parent != null) + { + ReData(data.parent, ref datas); + } + } + } +} \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Hotfix/Data/TaskListData.cs.meta b/Assets/DemoGame/GameScript/Hotfix/Data/TaskListData.cs.meta new file mode 100644 index 0000000..e43cba6 --- /dev/null +++ b/Assets/DemoGame/GameScript/Hotfix/Data/TaskListData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6c551642b6114f4aa079819541d2b9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DemoGame/GameScript/Hotfix/Helper/AnimatorHelper.cs b/Assets/DemoGame/GameScript/Hotfix/Helper/AnimatorHelper.cs new file mode 100644 index 0000000..874f2fd --- /dev/null +++ b/Assets/DemoGame/GameScript/Hotfix/Helper/AnimatorHelper.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections; +using UnityEngine; + +namespace ZC +{ + + /// + /// 动画辅助类 + /// + public static class AnimatorHelper + { + /// + /// 动画播放结束后执行方法 + /// + /// 状态机 + /// 播放完毕执行的方法 + /// + public static IEnumerator AnimatorOver(this Animator animator, Action action) + { + yield return new WaitForFixedUpdate(); //需要延时一帧,否则获取到的动画片段还没开始播放,就可能被判断为已经播放完成了 + yield return new WaitUntil(() => animator.PlayIsOver()); + action?.Invoke(); + } + + /// + /// 根据名字播放对应动画片段,并在动画播放结束后执行指定方法 + /// + /// 状态机 + /// 播放的动画名字 + /// 播放完毕执行的方法 + /// + public static IEnumerator AnimatorOver(this Animator animator, string animatorClipName, Action action) + { + animator.Play(animatorClipName); + //yield return new WaitForFixedUpdate();//需要延时一帧,否则获取到的动画片段还没开始播放,就可能被判断为已经播放完成了(可能需要) + yield return new WaitUntil(() => animator.PlayIsOver()); + Debug.Log(PlayIsOver(animator)); + action?.Invoke(); + } + + /// + /// 判断动画是否播放完毕 + /// + /// 状态机 + /// + public static bool PlayIsOver(this Animator animator) + { + var info = animator.GetCurrentAnimatorStateInfo(0); + if (info.normalizedTime >= 1.0f) + { + return true; + } + + return false; + } + } +} \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Hotfix/Helper/AnimatorHelper.cs.meta b/Assets/DemoGame/GameScript/Hotfix/Helper/AnimatorHelper.cs.meta new file mode 100644 index 0000000..9d93515 --- /dev/null +++ b/Assets/DemoGame/GameScript/Hotfix/Helper/AnimatorHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 755b483204034241b21ff8cae473683a +timeCreated: 1730708048 \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Hotfix/Other.meta b/Assets/DemoGame/GameScript/Hotfix/Other.meta new file mode 100644 index 0000000..5442735 --- /dev/null +++ b/Assets/DemoGame/GameScript/Hotfix/Other.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 841cd98b365d49a99123883571a9298c +timeCreated: 1730703865 \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Hotfix/Other/TaskListManager.cs b/Assets/DemoGame/GameScript/Hotfix/Other/TaskListManager.cs new file mode 100644 index 0000000..39251e6 --- /dev/null +++ b/Assets/DemoGame/GameScript/Hotfix/Other/TaskListManager.cs @@ -0,0 +1,32 @@ +using System.IO; +using Newtonsoft.Json; +using UnityEngine; + +namespace ZC +{ + internal class TaskListManager : ManagerBase + { + private TaskListDatas _datas; + public TaskListDatas Datas => _datas; + + public override void OnInit() + { + base.OnInit(); + + // string filePath = $"{Application.dataPath}/DemoGame/GameRes/Config/TaskListData.json"; + var textAsset = + ResourcesLocalComponent.Instance.LoadAssetSync(AssetConst + .Assets_DemoGame_GameRes_UIPanel_UIBattle_prefab); + + // var json = File.ReadAllText(textAsset.text); + var datas = JsonConvert.DeserializeObject(textAsset.text); + _datas = datas; + _datas.Init(); + } + + public void SetState(string title, TaskListType type) + { + _datas.SetState(title, type); + } + } +} \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Hotfix/Other/TaskListManager.cs.meta b/Assets/DemoGame/GameScript/Hotfix/Other/TaskListManager.cs.meta new file mode 100644 index 0000000..8eb4469 --- /dev/null +++ b/Assets/DemoGame/GameScript/Hotfix/Other/TaskListManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0d0c592ce64d42cca7697ce9772272de +timeCreated: 1730703890 \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Hotfix/UI/Logic/TaskListUI.cs b/Assets/DemoGame/GameScript/Hotfix/UI/Logic/TaskListUI.cs new file mode 100644 index 0000000..c79df26 --- /dev/null +++ b/Assets/DemoGame/GameScript/Hotfix/UI/Logic/TaskListUI.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +namespace ZC +{ + [UIType(UIType.TaskListUI)] + public class TaskListUI : UIBase + { + private Toggle tog_Item; + private TaskListDatas ListDatas; + + public override void Init() + { + base.Init(); + this.tog_Item = self.transform.FindChildDeep("tog_Item"); + + // TODO: + // ListDatas = ZCGame + for (var i = 0; i < ListDatas.ChildData.Count; i++) + { + + } + } + + } +} \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Hotfix/UI/Logic/TaskListUI.cs.meta b/Assets/DemoGame/GameScript/Hotfix/UI/Logic/TaskListUI.cs.meta new file mode 100644 index 0000000..3ee03e5 --- /dev/null +++ b/Assets/DemoGame/GameScript/Hotfix/UI/Logic/TaskListUI.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8bdfce83cded4259bdd1b1ad0d38590a +timeCreated: 1730687036 \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Hotfix/UI/UIType.cs b/Assets/DemoGame/GameScript/Hotfix/UI/UIType.cs index 9e48c1a..4601273 100644 --- a/Assets/DemoGame/GameScript/Hotfix/UI/UIType.cs +++ b/Assets/DemoGame/GameScript/Hotfix/UI/UIType.cs @@ -7,7 +7,8 @@ AnswerUI, AnalysisReportUI, IntroduceUI, - MinTipsUI + MinTipsUI, + TaskListUI } public enum UILayer