浏览代码

任务系统

lzx 3 天之前
父节点
当前提交
5446f2bda3

+ 7 - 0
Assets/Res/Config/TaskConditionConfig.json

@@ -0,0 +1,7 @@
+{
+  "configList": [
+    {},
+    {},
+    {}
+  ]
+}

+ 7 - 0
Assets/Res/Config/TaskConditionConfig.json.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: Xn0etC38UHqsVuHceO72AcKjbyZ5jBWe/QQ2AUQDJ7/0ikGT3vxcfGjG2qMp
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 76 - 0
Assets/Res/Config/TaskConfig.json

@@ -0,0 +1,76 @@
+{
+  "configList": [
+    {
+      "ID": 1,
+      "taskName": 301116,
+      "Description": null,
+      "conciseTaskMessage": -1,
+      "isDirectFinish": 0,
+      "taskType": 10,
+      "finishConditionType": 3,
+      "finishCount": 1,
+      "unlockType": -1,
+      "unlockLevel": 1,
+      "nextTaskID": 2,
+      "showType": 0,
+      "isInheritCount": -1,
+      "taskIcon": "asd",
+      "showCountValue": 1,
+      "startNoob2": 0,
+      "passPoint": 0,
+      "noTaskTracking": 0,
+      "notificationID": -1,
+      "triggerType": 1,
+      "loopType": 1,
+      "loopCount": 0
+    },
+    {
+      "ID": 2,
+      "taskName": 301120,
+      "Description": null,
+      "conciseTaskMessage": -1,
+      "isDirectFinish": 0,
+      "taskType": 10,
+      "finishConditionType": 2,
+      "finishCount": 5,
+      "unlockType": -1,
+      "unlockLevel": 1,
+      "nextTaskID": 3,
+      "showType": 0,
+      "isInheritCount": -1,
+      "taskIcon": "asd",
+      "showCountValue": 1,
+      "startNoob2": 0,
+      "passPoint": 0,
+      "noTaskTracking": 0,
+      "notificationID": -1,
+      "triggerType": 1,
+      "loopType": 1,
+      "loopCount": 0
+    },
+    {
+      "ID": 3,
+      "taskName": 301122,
+      "Description": null,
+      "conciseTaskMessage": -1,
+      "isDirectFinish": 0,
+      "taskType": 10,
+      "finishConditionType": 4,
+      "finishCount": 1,
+      "unlockType": -1,
+      "unlockLevel": 1,
+      "nextTaskID": 0,
+      "showType": 0,
+      "isInheritCount": -1,
+      "taskIcon": "asd",
+      "showCountValue": 1,
+      "startNoob2": 0,
+      "passPoint": 0,
+      "noTaskTracking": 0,
+      "notificationID": -1,
+      "triggerType": 1,
+      "loopType": 1,
+      "loopCount": 0
+    }
+  ]
+}

+ 7 - 0
Assets/Res/Config/TaskConfig.json.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: CX5Ot3+lAC2LKpT1E57KULwqTMx8oMG4gzY92K2eKwlIJ8OuJ/lgPsFsdfVS
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 735 - 0
Assets/Res/UI/MainPanel/MainPanel.prefab

@@ -164,6 +164,149 @@ MonoBehaviour:
   topOrLeftColor: {r: 0, g: 0, b: 0, a: 1}
   bottomOrRightColor: {r: 0.509434, g: 0.33882165, b: 0.33882165, a: 1}
   direction: 1
+--- !u!1 &1573232552483076684
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 7
+  m_Component:
+  - component: {fileID: 1935222612727109932}
+  - component: {fileID: 8619232221248716354}
+  - component: {fileID: 7172531054950919924}
+  - component: {fileID: 4910607662050102641}
+  - component: {fileID: 8014014210335560669}
+  - component: {fileID: 4418855113457263759}
+  m_Layer: 5
+  m_HasEditorInfo: 1
+  m_Name: Text_TaskMassge
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1935222612727109932
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1573232552483076684}
+  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: 483812832159869472}
+  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: 7.5, y: -38.644703}
+  m_SizeDelta: {x: 414.819, y: 76.8894}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &8619232221248716354
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1573232552483076684}
+  m_CullTransparentMesh: 1
+--- !u!114 &7172531054950919924
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1573232552483076684}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.45098042, g: 0.43529415, b: 0.39607847, 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_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 22
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 1
+    m_MaxSize: 40
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u4E00\u4E2A\u8001\u5934\u6B63\u5728\u6CB3\u8FB9..."
+--- !u!114 &4910607662050102641
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1573232552483076684}
+  m_Enabled: 0
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: -1
+  m_FlexibleWidth: 178.3554
+  m_FlexibleHeight: -1
+  m_LayoutPriority: 1
+--- !u!114 &8014014210335560669
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1573232552483076684}
+  m_Enabled: 0
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_HorizontalFit: 2
+  m_VerticalFit: 0
+--- !u!114 &4418855113457263759
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1573232552483076684}
+  m_Enabled: 0
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, 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 &1760937640502948944
 GameObject:
   m_ObjectHideFlags: 0
@@ -813,6 +956,68 @@ MonoBehaviour:
   m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
   m_EffectDistance: {x: 1, y: -1}
   m_UseGraphicAlpha: 1
+--- !u!1 &3138673783748447636
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 7
+  m_Component:
+  - component: {fileID: 8451011069730739083}
+  - component: {fileID: 4151086886705111501}
+  m_Layer: 5
+  m_HasEditorInfo: 1
+  m_Name: DynamicEvent
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8451011069730739083
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3138673783748447636}
+  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: 483812832159869472}
+  m_Father: {fileID: 5427787900727233847}
+  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: 106, y: -4}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &4151086886705111501
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3138673783748447636}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 0
+  m_StartCorner: 0
+  m_StartAxis: 0
+  m_CellSize: {x: 100, y: 100}
+  m_Spacing: {x: 0, y: -50.3}
+  m_Constraint: 0
+  m_ConstraintCount: 2
 --- !u!1 &3348075033185530517
 GameObject:
   m_ObjectHideFlags: 0
@@ -1057,6 +1262,86 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &4078923567955095082
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 7
+  m_Component:
+  - component: {fileID: 2301007846651890387}
+  - component: {fileID: 8787507019839027960}
+  - component: {fileID: 483222655172619623}
+  m_Layer: 5
+  m_HasEditorInfo: 1
+  m_Name: Text_TaskName
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2301007846651890387
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4078923567955095082}
+  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: 483812832159869472}
+  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: 67.39705, y: 25.3}
+  m_SizeDelta: {x: 209.7775, y: 35.318}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8787507019839027960
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4078923567955095082}
+  m_CullTransparentMesh: 1
+--- !u!114 &483222655172619623
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4078923567955095082}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.45098042, g: 0.43529415, b: 0.39607847, 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_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 26
+    m_FontStyle: 1
+    m_BestFit: 0
+    m_MinSize: 1
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u7B2C\u4E00\u7AE0:\u9493\u9C7C\u7FC1"
 --- !u!1 &5439861124006239330
 GameObject:
   m_ObjectHideFlags: 0
@@ -1704,6 +1989,228 @@ MonoBehaviour:
   topOrLeftColor: {r: 1, g: 1, b: 1, a: 1}
   bottomOrRightColor: {r: 0, g: 0, b: 0, a: 1}
   direction: 0
+--- !u!1 &7352086197235300010
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 7
+  m_Component:
+  - component: {fileID: 5427787900727233847}
+  - component: {fileID: 5982490551636298201}
+  - component: {fileID: 1902789611665251421}
+  - component: {fileID: 7377593421214716020}
+  m_Layer: 0
+  m_HasEditorInfo: 1
+  m_Name: Btn_Task
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5427787900727233847
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7352086197235300010}
+  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: 8451011069730739083}
+  m_Father: {fileID: 9037135992368401232}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 13.299988, y: -1133}
+  m_SizeDelta: {x: 76, y: 74}
+  m_Pivot: {x: 0, y: 1}
+--- !u!222 &5982490551636298201
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7352086197235300010}
+  m_CullTransparentMesh: 1
+--- !u!114 &1902789611665251421
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7352086197235300010}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3c247620ca3a1fd4ab2a2f3a5b287e07, 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
+  _icon_name: dec_renwu
+  isNotLoadDeftIcon: 0
+  CurrSpriteAtlas: {fileID: 100100200, guid: bec1e4479c1593746876da07861f4d67, type: 3}
+  packInfo:
+    packName: mainUI
+    packgJsonPath: /Art/UIAssets/TextrueJson\mainUI.txt
+    packgSpritePath: Assets/Res/UIAtlas/mainUI.spriteatlasv2
+    lasetJsonGUID: bb67f442413bd755b03774cb7d5a173d
+  useGradient: 0
+  topOrLeftColor: {r: 1, g: 1, b: 1, a: 1}
+  bottomOrRightColor: {r: 0, g: 0, b: 0, a: 1}
+  direction: 0
+--- !u!114 &7377593421214716020
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7352086197235300010}
+  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: 1902789611665251421}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!1 &7816344930248353185
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 7
+  m_Component:
+  - component: {fileID: 5929282742778120016}
+  - component: {fileID: 1079986196912690948}
+  - component: {fileID: 297883569620714810}
+  m_Layer: 0
+  m_HasEditorInfo: 1
+  m_Name: myImage
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5929282742778120016
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7816344930248353185}
+  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: 483812832159869472}
+  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: 165.02896, y: -19.8598}
+  m_SizeDelta: {x: 437.0445, y: 130.2431}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1079986196912690948
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7816344930248353185}
+  m_CullTransparentMesh: 1
+--- !u!114 &297883569620714810
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7816344930248353185}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3c247620ca3a1fd4ab2a2f3a5b287e07, 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: 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
+  _icon_name: dec_renwu_dise
+  isNotLoadDeftIcon: 0
+  CurrSpriteAtlas: {fileID: 100100200, guid: bec1e4479c1593746876da07861f4d67, type: 3}
+  packInfo:
+    packName: mainUI
+    packgJsonPath: /Art/UIAssets/TextrueJson\mainUI.txt
+    packgSpritePath: Assets/Res/UIAtlas/mainUI.spriteatlasv2
+    lasetJsonGUID: bb67f442413bd755b03774cb7d5a173d
+  useGradient: 0
+  topOrLeftColor: {r: 1, g: 1, b: 1, a: 1}
+  bottomOrRightColor: {r: 0, g: 0, b: 0, a: 1}
+  direction: 0
 --- !u!1 &8091980665139676657
 GameObject:
   m_ObjectHideFlags: 0
@@ -1917,6 +2424,218 @@ MonoBehaviour:
   m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
   m_EffectDistance: {x: 1, y: -1}
   m_UseGraphicAlpha: 1
+--- !u!1 &8712562821128756198
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 7
+  m_Component:
+  - component: {fileID: 483812832159869472}
+  - component: {fileID: 4178929015793443389}
+  - component: {fileID: 2050290114926485253}
+  - component: {fileID: 4460943036588396238}
+  m_Layer: 5
+  m_HasEditorInfo: 1
+  m_Name: ShengShiEventWidget
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &483812832159869472
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8712562821128756198}
+  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: 5929282742778120016}
+  - {fileID: 2301007846651890387}
+  - {fileID: 1935222612727109932}
+  m_Father: {fileID: 8451011069730739083}
+  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, y: 0.5}
+--- !u!114 &4178929015793443389
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8712562821128756198}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 6a23dadfaa104ddf929b8c98dd02623c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  maxDuration: 0.3
+  isUpdate: 0
+  currTime: 0.3848319
+  GrpupInfos:
+  - Foldout: 1
+    isActive: 1
+    animName: 
+    isLoop: 0
+    allTargets:
+    - {fileID: 8712562821128756198}
+    TweenAssetInfo: {fileID: 11400000, guid: 45a33638e1bf2e040a04be1042aa2f06, type: 2}
+    TargetFoldout: 1
+    maxDuration: 0.3
+    isUpdate: 1
+    currTime: 0
+  MinMaxGradient:
+    m_Mode: 0
+    m_GradientMin:
+      serializedVersion: 2
+      key0: {r: 1, g: 1, b: 1, a: 1}
+      key1: {r: 1, g: 1, b: 1, a: 1}
+      key2: {r: 0, g: 0, b: 0, a: 0}
+      key3: {r: 0, g: 0, b: 0, a: 0}
+      key4: {r: 0, g: 0, b: 0, a: 0}
+      key5: {r: 0, g: 0, b: 0, a: 0}
+      key6: {r: 0, g: 0, b: 0, a: 0}
+      key7: {r: 0, g: 0, b: 0, a: 0}
+      ctime0: 0
+      ctime1: 65535
+      ctime2: 0
+      ctime3: 0
+      ctime4: 0
+      ctime5: 0
+      ctime6: 0
+      ctime7: 0
+      atime0: 0
+      atime1: 65535
+      atime2: 0
+      atime3: 0
+      atime4: 0
+      atime5: 0
+      atime6: 0
+      atime7: 0
+      m_Mode: 0
+      m_ColorSpace: -1
+      m_NumColorKeys: 2
+      m_NumAlphaKeys: 2
+    m_GradientMax:
+      serializedVersion: 2
+      key0: {r: 1, g: 1, b: 1, a: 1}
+      key1: {r: 1, g: 1, b: 1, a: 1}
+      key2: {r: 0, g: 0, b: 0, a: 0}
+      key3: {r: 0, g: 0, b: 0, a: 0}
+      key4: {r: 0, g: 0, b: 0, a: 0}
+      key5: {r: 0, g: 0, b: 0, a: 0}
+      key6: {r: 0, g: 0, b: 0, a: 0}
+      key7: {r: 0, g: 0, b: 0, a: 0}
+      ctime0: 0
+      ctime1: 65535
+      ctime2: 0
+      ctime3: 0
+      ctime4: 0
+      ctime5: 0
+      ctime6: 0
+      ctime7: 0
+      atime0: 0
+      atime1: 65535
+      atime2: 0
+      atime3: 0
+      atime4: 0
+      atime5: 0
+      atime6: 0
+      atime7: 0
+      m_Mode: 0
+      m_ColorSpace: -1
+      m_NumColorKeys: 2
+      m_NumAlphaKeys: 2
+    m_ColorMin: {r: 0, g: 0, b: 0, a: 0}
+    m_ColorMax: {r: 0, g: 0, b: 0, a: 0}
+  isLoop: 0
+--- !u!114 &2050290114926485253
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8712562821128756198}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4810a0857c909354fa00c3aafdeac753, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  data:
+  - key: myButton
+    gameObject: {fileID: 4460943036588396238}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
+  - key: Massge
+    gameObject: {fileID: 7172531054950919924}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
+  - key: bg
+    gameObject: {fileID: 297883569620714810}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
+  - key: Text_Name
+    gameObject: {fileID: 483222655172619623}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
+  isAssetBundle: 1
+--- !u!114 &4460943036588396238
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8712562821128756198}
+  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: 0
+  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: 0}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
 --- !u!1 &8986363544919513421
 GameObject:
   m_ObjectHideFlags: 0
@@ -2029,6 +2748,7 @@ RectTransform:
   - {fileID: 2024304381802793110}
   - {fileID: 1798015912972164048}
   - {fileID: 3695676087259227986}
+  - {fileID: 5427787900727233847}
   m_Father: {fileID: 0}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
@@ -2104,6 +2824,21 @@ MonoBehaviour:
     isAssetBundle: 0
     isList: 0
     ListCollectorDatas: []
+  - key: Btn_Task
+    gameObject: {fileID: 7377593421214716020}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
+  - key: Text_TaskName
+    gameObject: {fileID: 483222655172619623}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
+  - key: Text_TaskMassge
+    gameObject: {fileID: 7172531054950919924}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
   isAssetBundle: 0
 --- !u!1 &9153091249090986804
 GameObject:

+ 176 - 0
Assets/Scripts/GameData/ExcelConfig/TaskConfig.cs

@@ -0,0 +1,176 @@
+// Auto Generated Code By excel2json
+// Generate From Excel\Task.xlsx. SheetName: TaskConfig
+
+using System;
+using Fort23.GameData;
+
+namespace Excel2Json
+{
+	[Config(prefab = "TaskConfig.json")]
+	public partial class TaskConfigHolder : ConfigHolder<TaskConfig>
	{
+	}
+
+
+	[Serializable]
+	public struct TaskConfig : IConfig
	{
+		public int GetID() {return ID;} 
+		/// <summary>
+		///ID序列号
+		/// </summary>
+public int ID;
+
+
+		/// <summary>
+		///任务名 
+		/// </summary>
+public int taskName;
+
+
+		/// <summary>
+		///任务描述
+		/// </summary>
+public int Description;
+
+
+		/// <summary>
+		///简洁描述
+		/// </summary>
+public int conciseTaskMessage;
+
+
+		/// <summary>
+		///是否可以直接完成 
+		/// </summary>
+public int isDirectFinish;
+
+
+		/// <summary>
+		///任务类型 见任务索引
+		/// </summary>
+public int taskType;
+
+
+		/// <summary>
+		///完成条件类型 读第二页ID
+		/// </summary>
+public int finishConditionType;
+
+
+		/// <summary>
+		///完成效果值
+		/// </summary>
+public int[] finishVlaue;
+
+
+		/// <summary>
+		///完成次数
+		/// </summary>
+public int finishCount;
+
+
+		/// <summary>
+		///奖励道具ID 新手任务的积分道具必须是最后一位
+		/// </summary>
+public int[] awardItemId;
+
+
+		/// <summary>
+		///奖励道具数量
+		/// </summary>
+public int[] awardItemCount;
+
+
+		/// <summary>
+		///解锁类型 -1=不需要解锁 1=修为解锁 
+		/// </summary>
+public int unlockType;
+
+
+		/// <summary>
+		///解锁关卡id(完成) 或Unlock表ID
+		/// </summary>
+public int unlockLevel;
+
+
+		/// <summary>
+		///下一个任务ID(0表示无后续)
+		/// </summary>
+public int nextTaskID;
+
+
+		/// <summary>
+		///0=激活时显示 1=前置任务领奖后显示
+		/// </summary>
+public int showType;
+
+
+		/// <summary>
+		///仅新手任务和成就任务生效 1=继承 2=不继承
+		/// </summary>
+public int isInheritCount;
+
+
+		/// <summary>
+		///完成时开启的任务
+		/// </summary>
+public int[] nextTaskId_1;
+
+
+		/// <summary>
+		///任务图标
+		/// </summary>
+public string taskIcon;
+
+
+		/// <summary>
+		///显示完成进度
+		/// </summary>
+public int showCountValue;
+
+
+		/// <summary>
+		///开启第二个新手任务
+		/// </summary>
+public int startNoob2;
+
+
+		/// <summary>
+		///通行证活动增加的点数 日常和周常任务才增加
+		/// </summary>
+public int passPoint;
+
+
+		/// <summary>
+		///任务通知不追踪进度变化
+		/// </summary>
+public int noTaskTracking;
+
+
+		/// <summary>
+		///通知描述
+		/// </summary>
+public int notificationID;
+
+
+		/// <summary>
+		///1=被动触发 2=生成触发
+		/// </summary>
+public int triggerType;
+
+
+		/// <summary>
+		///任务链循环类型 1=固定每日 2=固定每周 3=跟随活动
+		/// </summary>
+public int loopType;
+
+
+		/// <summary>
+		///循环次数 -1:无限次
+		/// </summary>
+public int loopCount;
+
+
+	}
+
+}
+// End of Auto Generated Code

+ 11 - 0
Assets/Scripts/GameData/ExcelConfig/TaskConfig.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: CHoc4C+tUXvtUByGtg+uUn8xwROB80uHQZB93RhTufkB8HoMzw18qmy3ksAf
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 13 - 7
Assets/Scripts/GameLogic/Player/AccountFileInfo.cs

@@ -1,3 +1,4 @@
+using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.IO;
@@ -30,10 +31,11 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
     [System.Serializable]
     public class PlayerData
     {
-        // public SkillData[] usrSkill = new SkillData[10];
-        //
-        // public FaBaoData[] UseFaBaoDatas = new FaBaoData[4];
         
+        /// <summary>
+        /// 任务数据
+        /// </summary>
+        public  List<TaskData> tasks = new List<TaskData>();
         
         /// <summary>
         /// 商店数据
@@ -88,10 +90,6 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
         /// 战斗引导下标
         /// </summary>
         public int combatGuideIndex = 0;
-        // /// <summary>
-        // /// 后备英雄(共享等级)
-        // /// </summary>
-        // public List<HeroData> HeroListInBackDatas = new List<HeroData>();
     }
     
     
@@ -450,6 +448,14 @@ public class AccountFileInfo : Singleton<AccountFileInfo>
 
         public int TaoismSkillId;
     }
+    
+    // 任务数据
+    [Serializable]
+    public class TaskData
+    {
+        public int taskID;
+        public int fishCount;
+    }
 
     [System.Serializable]
     public class ItemData

+ 325 - 0
Assets/Scripts/GameLogic/PlayerDataEditorWindow.cs

@@ -0,0 +1,325 @@
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEngine;
+using System.Reflection;
+using System.Collections.Generic;
+using System;
+using System.Collections;
+using System.IO;
+using Fort23.UTool;
+using PlayerData = AccountFileInfo.PlayerData;
+
+public class PlayerDataEditorWindow : EditorWindow
+{
+    private AccountFileInfo.PlayerData playerData;
+    private Vector2 scrollPos;
+    private Dictionary<string, bool> foldoutStates = new Dictionary<string, bool>();
+
+    private string DataFilePath = "/playerData.txt";
+
+    [MenuItem("Tools/PlayerData 编辑器")]
+    public static void ShowWindow()
+    {
+        GetWindow<PlayerDataEditorWindow>("PlayerData 编辑器");
+    }
+
+    private void OnEnable()
+    {
+        // 初始化 PlayerData(示例中创建一个新实例,实际中尝试加载)
+        playerData = new AccountFileInfo.PlayerData();
+        // 尝试从 persistentDataPath 加载数据
+        LoadPlayerData();
+    }
+
+    private void OnGUI()
+    {
+        GUIStyle headerStyle = new GUIStyle(EditorStyles.boldLabel) { fontSize = 14, padding = new RectOffset(5, 5, 5, 5) };
+        GUIStyle sectionStyle = new GUIStyle(EditorStyles.helpBox) { margin = new RectOffset(5, 5, 5, 5), padding = new RectOffset(10, 10, 10, 10) };
+
+        scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
+
+        if (playerData == null)
+        {
+            EditorGUILayout.HelpBox("未加载 PlayerData!点击下方创建新数据。", MessageType.Warning);
+            if (GUILayout.Button("创建新 PlayerData", GUILayout.Height(30)))
+            {
+                playerData = new AccountFileInfo.PlayerData();
+            }
+
+            EditorGUILayout.EndScrollView();
+            return;
+        }
+
+        EditorGUILayout.LabelField("PlayerData 编辑器", headerStyle);
+        EditorGUILayout.Space();
+
+        EditorGUILayout.BeginVertical(sectionStyle);
+        try
+        {
+            DrawFields(playerData, playerData.GetType(), "PlayerData.");
+        }
+        catch (Exception ex)
+        {
+            EditorGUILayout.HelpBox($"绘制字段时出错: {ex.Message}", MessageType.Error);
+        }
+
+        EditorGUILayout.EndVertical();
+
+        EditorGUILayout.Space();
+        EditorGUILayout.BeginHorizontal();
+        if (GUILayout.Button("保存 PlayerData", GUILayout.Height(30)))
+        {
+            if (EditorUtility.DisplayDialog("保存确认", $"确定要保存到 {Application.persistentDataPath + DataFilePath}?\n现有文件将被覆盖。", "确定", "取消"))
+            {
+                SavePlayerData();
+            }
+        }
+
+        if (GUILayout.Button("加载 PlayerData", GUILayout.Height(30)))
+        {
+            if (EditorUtility.DisplayDialog("加载确认", $"确定要从 {Application.persistentDataPath + DataFilePath} 加载数据?\n当前编辑的数据将被覆盖。", "确定", "取消"))
+            {
+                LoadPlayerData();
+            }
+        }
+
+        EditorGUILayout.EndHorizontal();
+
+        EditorGUILayout.EndScrollView();
+    }
+
+    private void DrawFields(object obj, Type type, string prefix = "")
+    {
+        if (obj == null)
+        {
+            EditorGUILayout.LabelField($"{prefix} (空)");
+            return;
+        }
+
+        FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance);
+        foreach (FieldInfo field in fields)
+        {
+            string fieldKey = $"{prefix}{field.Name}";
+            object value = field.GetValue(obj);
+
+            // 初始化折叠状态
+            if (!foldoutStates.ContainsKey(fieldKey))
+                foldoutStates[fieldKey] = false;
+
+            // 处理基本类型
+            if (field.FieldType == typeof(int))
+            {
+                EditorGUILayout.BeginHorizontal();
+                EditorGUILayout.LabelField(field.Name, GUILayout.Width(200));
+                int newValue = EditorGUILayout.IntField(value != null ? (int)value : 0);
+                field.SetValue(obj, newValue);
+                EditorGUILayout.EndHorizontal();
+            }
+            else if (field.FieldType == typeof(long))
+            {
+                EditorGUILayout.BeginHorizontal();
+                EditorGUILayout.LabelField(field.Name, GUILayout.Width(200));
+                long newValue = EditorGUILayout.LongField(value != null ? (long)value : 0);
+                field.SetValue(obj, newValue);
+                EditorGUILayout.EndHorizontal();
+            }
+            else if (field.FieldType == typeof(bool))
+            {
+                EditorGUILayout.BeginHorizontal();
+                EditorGUILayout.LabelField(field.Name, GUILayout.Width(200));
+                bool newValue = EditorGUILayout.Toggle(value != null ? (bool)value : false);
+                field.SetValue(obj, newValue);
+                EditorGUILayout.EndHorizontal();
+            }
+            else if (field.FieldType == typeof(float))
+            {
+                EditorGUILayout.BeginHorizontal();
+                EditorGUILayout.LabelField(field.Name, GUILayout.Width(200));
+                float newValue = EditorGUILayout.FloatField(value != null ? (float)value : 0f);
+                field.SetValue(obj, newValue);
+                EditorGUILayout.EndHorizontal();
+            }
+            else if (field.FieldType == typeof(string))
+            {
+                EditorGUILayout.BeginHorizontal();
+                EditorGUILayout.LabelField(field.Name, GUILayout.Width(200));
+                string newValue = EditorGUILayout.TextField(value != null ? (string)value : "");
+                field.SetValue(obj, newValue);
+                EditorGUILayout.EndHorizontal();
+            }
+            // 处理列表类型
+            else if (field.FieldType.IsGenericType && field.FieldType.GetGenericTypeDefinition() == typeof(List<>))
+            {
+                Type itemType = field.FieldType.GetGenericArguments()[0];
+                IList list = (IList)(value ?? Activator.CreateInstance(field.FieldType));
+
+                EditorGUILayout.BeginHorizontal();
+                foldoutStates[fieldKey] = EditorGUILayout.Foldout(foldoutStates[fieldKey], $"{field.Name} (列表, {list.Count} 项)", true);
+                EditorGUILayout.EndHorizontal();
+
+                if (foldoutStates[fieldKey])
+                {
+                    EditorGUI.indentLevel++;
+                    EditorGUILayout.BeginHorizontal();
+                    EditorGUILayout.LabelField("大小", GUILayout.Width(200));
+                    int newSize = EditorGUILayout.IntField(list.Count);
+                    try
+                    {
+                        while (newSize > list.Count)
+                        {
+                            object newItem = Activator.CreateInstance(itemType);
+                            list.Add(newItem);
+                        }
+
+                        while (newSize < list.Count)
+                        {
+                            list.RemoveAt(list.Count - 1);
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        EditorGUILayout.HelpBox($"修改列表大小时出错: {ex.Message}", MessageType.Error);
+                    }
+
+                    EditorGUILayout.EndHorizontal();
+
+                    for (int i = 0; i < list.Count; i++)
+                    {
+                        string itemKey = $"{fieldKey}[{i}]";
+                        if (!foldoutStates.ContainsKey(itemKey))
+                            foldoutStates[itemKey] = false;
+
+                        EditorGUILayout.BeginHorizontal();
+                        foldoutStates[itemKey] = EditorGUILayout.Foldout(foldoutStates[itemKey], $"{field.Name}[{i}]", true);
+                        if (GUILayout.Button("删除", GUILayout.Width(60)))
+                        {
+                            list.RemoveAt(i);
+                            foldoutStates.Remove(itemKey);
+                            break;
+                        }
+
+                        EditorGUILayout.EndHorizontal();
+
+                        if (foldoutStates[itemKey])
+                        {
+                            EditorGUI.indentLevel++;
+                            EditorGUILayout.BeginVertical(EditorStyles.helpBox);
+                            try
+                            {
+                                DrawFields(list[i], itemType, $"{prefix}{field.Name}[{i}].");
+                            }
+                            catch (Exception ex)
+                            {
+                                EditorGUILayout.HelpBox($"绘制 {itemKey} 时出错: {ex.Message}", MessageType.Error);
+                            }
+
+                            EditorGUILayout.EndVertical();
+                            EditorGUI.indentLevel--;
+                        }
+                    }
+
+                    if (GUILayout.Button($"添加新 {itemType.Name}", GUILayout.Height(25)))
+                    {
+                        try
+                        {
+                            object newItem = Activator.CreateInstance(itemType);
+                            list.Add(newItem);
+                        }
+                        catch (Exception ex)
+                        {
+                            EditorGUILayout.HelpBox($"添加新 {itemType.Name} 时出错: {ex.Message}", MessageType.Error);
+                        }
+                    }
+
+                    field.SetValue(obj, list);
+                    EditorGUI.indentLevel--;
+                }
+            }
+            // 处理自定义类
+            else if (field.FieldType.IsClass)
+            {
+                EditorGUILayout.BeginHorizontal();
+                foldoutStates[fieldKey] = EditorGUILayout.Foldout(foldoutStates[fieldKey], $"{field.Name} ({field.FieldType.Name})", true);
+                if (value == null && GUILayout.Button("创建", GUILayout.Width(60)))
+                {
+                    value = Activator.CreateInstance(field.FieldType);
+                    field.SetValue(obj, value);
+                }
+
+                EditorGUILayout.EndHorizontal();
+
+                if (foldoutStates[fieldKey] && value != null)
+                {
+                    EditorGUI.indentLevel++;
+                    EditorGUILayout.BeginVertical(EditorStyles.helpBox);
+                    try
+                    {
+                        DrawFields(value, field.FieldType, $"{prefix}{field.Name}.");
+                    }
+                    catch (Exception ex)
+                    {
+                        EditorGUILayout.HelpBox($"绘制 {fieldKey} 时出错: {ex.Message}", MessageType.Error);
+                    }
+
+                    EditorGUILayout.EndVertical();
+                    EditorGUI.indentLevel--;
+                }
+            }
+            else
+            {
+                EditorGUILayout.LabelField($"{field.Name} ({field.FieldType.Name})", "不支持的类型");
+            }
+        }
+    }
+
+    private void SavePlayerData()
+    {
+        try
+        {
+            string json = JsonUtility.ToJson(playerData, true);
+            string path = Application.persistentDataPath + DataFilePath;
+            File.WriteAllText(path, json);
+            Debug.Log($"PlayerData 已保存至 {path}");
+            EditorUtility.DisplayDialog("保存成功", $"PlayerData 已保存至 {path}", "确定");
+        }
+        catch (Exception ex)
+        {
+            EditorGUILayout.HelpBox($"保存 PlayerData 时出错: {ex.Message}", MessageType.Error);
+            EditorUtility.DisplayDialog("保存失败", $"保存 PlayerData 时出错: {ex.Message}", "确定");
+        }
+    }
+
+    private void LoadPlayerData()
+    {
+        try
+        {
+            string path = Application.persistentDataPath + DataFilePath;
+            if (File.Exists(path))
+            {
+                string json = File.ReadAllText(path);
+                
+                // StreamReader sr = File.OpenText(persistentDataPath);
+                // string data = sr.ReadToEnd();
+                // sr.Close();
+                // playerData = new PlayerData();
+                
+                JsonUtility.FromJsonOverwrite(json, playerData);
+                // playerData = JsonUtility.FromJson<AccountFileInfo.PlayerData>(json);
+                // foldoutStates.Clear();
+                // Debug.Log($"PlayerData 已从 {path} 加载");
+                // EditorUtility.DisplayDialog("加载成功", $"PlayerData 已从 {path} 加载", "确定");
+            }
+            else
+            {
+                EditorGUILayout.HelpBox($"未找到文件: {path}", MessageType.Warning);
+                EditorUtility.DisplayDialog("加载失败", $"未找到文件: {path}", "确定");
+            }
+        }
+        catch (Exception ex)
+        {
+            EditorGUILayout.HelpBox($"加载 PlayerData 时出错: {ex.Message}", MessageType.Error);
+            EditorUtility.DisplayDialog("加载失败", $"加载 PlayerData 时出错: {ex.Message}", "确定");
+        }
+    }
+}
+#endif

+ 11 - 0
Assets/Scripts/GameLogic/PlayerDataEditorWindow.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: B3ses3v5BS04/IbTocZ0oeJJk4sa706ikMDpdbsMQ24JYg3cG98aygJ6/wYY
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 2 - 0
Assets/Scripts/GameUI/GameApplction.cs

@@ -163,6 +163,8 @@ public class GameApplction : IGameStart
         CombatDrive.Instance.AddCombatController(new CombatController());
         gameStartUIPanel.ShowMassge("loadCombat");
         gameStartUIPanel.SetSlider(0.95f);
+        TaskManager.Instance.AcceptTask(1);
+        
         await CombatDrive.Instance.StartCombat(startCombatInfo);
         PlayerManager.Instance.GongFaControl.SaveUseSkill();
         PlayerManager.Instance.GongFaControl.SetTaoismSkillIndex(AccountFileInfo.Instance.playerData.heroData

+ 199 - 0
Assets/Scripts/GameUI/TaskManager.cs

@@ -0,0 +1,199 @@
+using System.Collections.Generic;
+using UnityEngine;
+using System.Linq;
+using System;
+using System.Threading.Tasks;
+using Common.Utility.CombatEvent;
+using Excel2Json;
+using Fort23.Mono;
+using Fort23.UTool;
+using GameLogic.Combat;
+using Utility;
+
+public class TaskManager : Singleton<TaskManager>
+{
+    private List<TaskConfig> allTasks;
+    private Dictionary<int, AccountFileInfo.TaskData> allTsk;
+
+
+    public TaskManager()
+    {
+        allTasks = ConfigComponent.Instance.GetAll<TaskConfig>().ToList();
+        allTsk = new Dictionary<int, AccountFileInfo.TaskData>();
+
+        foreach (var playerDataTask in AccountFileInfo.Instance.playerData.tasks)
+        {
+            allTsk.Add(playerDataTask.taskID, playerDataTask);
+        }
+    }
+
+
+    // 接取任务
+    public void AcceptTask(int taskID)
+    {
+        if (!allTsk.ContainsKey(taskID))
+        {
+            AccountFileInfo.TaskData taskData = new AccountFileInfo.TaskData();
+            taskData.taskID = taskID;
+            allTsk.Add(taskID, taskData);
+            AccountFileInfo.Instance.playerData.tasks.Clear();
+            AccountFileInfo.Instance.playerData.tasks.AddRange(allTsk.Values);
+            AccountFileInfo.Instance.SavePlayerData();
+        }
+    }
+
+
+    public void TriggerTask(int taskId)
+    {
+        if (allTsk.ContainsKey(taskId))
+        {
+            TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskId);
+            if (taskConfig.finishConditionType == 3)
+            {
+                //触发对话
+                DialoguePanel.OpenDialoguePanel(taskConfig.finishVlaue,null, ShowDialogueEventData.MessageShowType.Verbatim, (int? s) =>
+                {
+                    OnDialog(taskConfig.ID);
+                });
+              
+            }
+
+            else if (taskConfig.finishConditionType == 2)
+            {
+                CombatDrive.Instance.LoadLevelBattleCombat(taskConfig.finishVlaue[0], (iswin) =>
+                {
+                    if (iswin)
+                    {
+                        OnMonsterKilled(taskConfig.finishVlaue[0]);
+                    }
+                    
+                });
+                //进入战斗
+            }
+            //不能直接做任务 通过其他系统检测完成任务条件
+            //这里直接弹出提示
+            else
+            {
+                
+            }
+        }
+    }
+
+    public void OnDialog(int taskId)
+    {
+        foreach (var taskData in allTsk)
+        {
+            TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskData.Key);
+            if (!IsTaskComplete(taskData.Key) && taskConfig.finishConditionType == 3 && taskConfig.ID== taskId)
+            {
+                taskData.Value.fishCount++;
+
+                if (IsTaskComplete(taskData.Key))
+                {
+                    CompleteTask(taskData.Key);
+                }
+
+                AccountFileInfo.Instance.SavePlayerData();
+            }
+        }
+    }
+
+    // 击杀怪物
+    public void OnMonsterKilled(int leveBattleId)
+    {
+        foreach (var taskData in allTsk)
+        {
+            TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskData.Key);
+            if (!IsTaskComplete(taskData.Key) && taskConfig.finishConditionType == 2 && taskConfig.finishVlaue[0] == leveBattleId)
+            {
+                taskData.Value.fishCount++;
+
+                if (IsTaskComplete(taskData.Key))
+                {
+                    CompleteTask(taskData.Key);
+                }
+
+                AccountFileInfo.Instance.SavePlayerData();
+            }
+        }
+    }
+
+    // 收集道具
+    public void OnItemCollected(int itemID)
+    {
+        foreach (var taskData in allTsk)
+        {
+            TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskData.Key);
+            if (!IsTaskComplete(taskData.Key) && taskConfig.finishConditionType == 1 && taskConfig.finishVlaue[0] == itemID)
+            {
+                taskData.Value.fishCount++;
+
+                if (IsTaskComplete(taskData.Key))
+                {
+                    CompleteTask(taskData.Key);
+                }
+
+                AccountFileInfo.Instance.SavePlayerData();
+            }
+        }
+    }
+
+    // 完成任务
+    private void CompleteTask(int taskID)
+    {
+        TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskID);
+
+        GrantReward(taskID);
+        // 触发下一个任务(主线)
+        if (taskConfig.nextTaskID != 0)
+        {
+            AcceptTask(taskConfig.nextTaskID);
+        }
+
+        //发送事件 更新主线任务
+    }
+
+
+    // 发放奖励
+    private void GrantReward(int taskID)
+    {
+    }
+
+    //获取任务数据
+    public AccountFileInfo.TaskData GetTaskData(int taskID)
+    {
+        if (allTsk.ContainsKey(taskID))
+        {
+            return allTsk[taskID];
+        }
+
+        return null;
+    }
+
+    //任务是否完成
+    public bool IsTaskComplete(int taskID)
+    {
+        if (allTsk.ContainsKey(taskID))
+        {
+            TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskID);
+            return allTsk[taskID].fishCount >= taskConfig.finishCount;
+        }
+
+        return false;
+    }
+
+    //获得主线任务
+    public AccountFileInfo.TaskData GetMainTaskData()
+    {
+        foreach (var keyValuePair in allTsk)
+        {
+            TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(keyValuePair.Key);
+            if (taskConfig.taskType == 10 && !IsTaskComplete(keyValuePair.Key))
+            {
+                return keyValuePair.Value;
+            }
+        }
+
+        return null;
+    }
+}

+ 11 - 0
Assets/Scripts/GameUI/TaskManager.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: CHwWsyz4UHK1S9Qaf/fZKw5o61oMa4SsDFiFesZKKzAHUKhehIXscKpdc1y2
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 27 - 1
Assets/Scripts/GameUI/UI/DialoguePanel/DialoguePanel.cs

@@ -29,6 +29,8 @@ namespace Fort23.Mono
         private bool _skipTyping;
         private bool _isShowingOptions;
 
+        private int type;
+
         public static async void OpenDialoguePanel(int id, string[] icon,
             ShowDialogueEventData.MessageShowType messageShowType,
             Action<int?> finish)
@@ -36,6 +38,15 @@ namespace Fort23.Mono
             DialoguePanel dialoguePanel = await UIManager.Instance.LoadAndOpenPanel<DialoguePanel>(null, UILayer.Top);
             dialoguePanel.ShowPanel(id, icon, messageShowType, finish);
         }
+        
+        
+        public static async void OpenDialoguePanel( int[] LanID, string[] icon,
+            ShowDialogueEventData.MessageShowType messageShowType,
+            Action<int?> finish)
+        {
+            DialoguePanel dialoguePanel = await UIManager.Instance.LoadAndOpenPanel<DialoguePanel>(null, UILayer.Top);
+            dialoguePanel.ShowPanel(LanID, icon, messageShowType, finish);
+        }
 
         private void Init()
         {
@@ -114,13 +125,28 @@ namespace Fort23.Mono
             StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
             StartShowMassge();
         }
+        
+        
+        public void ShowPanel( int[] LanID, string[] icon,
+            ShowDialogueEventData.MessageShowType messageShowType,
+            Action<int?> finish)
+        {
+       
+            showIconName = icon;
+            this.dialogueMessaga = LanID;
+            this.messageShowType = messageShowType;
+            this.finish = finish;
+            index = 0;
+            StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
+            StartShowMassge();
+        }
 
         private void StartShowMassge()
         {
             if (index >= dialogueMessaga.Length)
             {
                 // 所有句子显示完成,检查是否有选项
-                if (eventConditionConfig.optionType == 1 && !_isShowingOptions)
+                if (eventConditionConfig.ID != 0 && eventConditionConfig.optionType == 1 && !_isShowingOptions)
                 {
                     ShowOptions();
                 }

+ 19 - 3
Assets/Scripts/GameUI/UI/MainPanel/MainPanel.cs

@@ -20,8 +20,7 @@ namespace Fort23.Mono
             isAddStack = true;
             IsShowAppBar = true;
         }
-        
-        
+
 
         protected override void AddEvent()
         {
@@ -116,6 +115,24 @@ namespace Fort23.Mono
             Slider_Map.value = AccountFileInfo.Instance.playerData.senceExplorationProgress;
 
             Slider_Exp.maxValue = PlayerManager.Instance.myHero.powerUpConfig.levelUpExp;
+
+            UpdateTaskInfo();
+        }
+
+        public void UpdateTaskInfo()
+        {
+            AccountFileInfo.TaskData taskData = TaskManager.Instance.GetMainTaskData();
+            if (taskData != null)
+            {
+                Btn_Task.gameObject.SetActive(true);
+                TaskConfig taskConfig = ConfigComponent.Instance.Get<TaskConfig>(taskData.taskID);
+                Text_TaskName.text = LanguageManager.Instance.Text(taskConfig.taskName);
+                Text_TaskMassge.text = LanguageManager.Instance.Text(taskConfig.conciseTaskMessage);
+            }
+            else
+            {
+                Btn_Task.gameObject.SetActive(false);
+            }
         }
 
         private void CameraSelect_onValueChanged(float value)
@@ -209,7 +226,6 @@ namespace Fort23.Mono
                 EventSystemManager.Instance.DetectRandomEvents();
             }
 
-         
 
             int currentMiao = (int)((TimeHelper.ClientNow() - PlayerManager.Instance.myHero.heroData.upTime) / 1000);
 

+ 33 - 0
Assets/Scripts/GameUI/UI/MainPanel/MainPanelData.cs

@@ -129,6 +129,39 @@ namespace Fort23.Mono
 	      return _Slider_Exp;
 	     }
 	   }
+	  private Button _Btn_Task;
+	  public Button Btn_Task
+	   {
+	   get{
+	      if (_Btn_Task == null)
+	       {
+	         _Btn_Task  = GetUIUnit<Button>("Btn_Task"); 
+	       }
+	      return _Btn_Task;
+	     }
+	   }
+	  private Text _Text_TaskName;
+	  public Text Text_TaskName
+	   {
+	   get{
+	      if (_Text_TaskName == null)
+	       {
+	         _Text_TaskName  = GetUIUnit<Text>("Text_TaskName"); 
+	       }
+	      return _Text_TaskName;
+	     }
+	   }
+	  private Text _Text_TaskMassge;
+	  public Text Text_TaskMassge
+	   {
+	   get{
+	      if (_Text_TaskMassge == null)
+	       {
+	         _Text_TaskMassge  = GetUIUnit<Text>("Text_TaskMassge"); 
+	       }
+	      return _Text_TaskMassge;
+	     }
+	   }
 	  #endregion 自定义数据结束 
 	 public override async CTask SetUIGameObject(GameObject gObjectPoolInterface)
 	{

文件差异内容过多而无法显示
+ 0 - 0
Assets/StreamingAssets/assetConfig.txt


二进制
Excel2Json/Excel/Task.xlsx


+ 2 - 0
XiuXianGame.sln.DotSettings.user

@@ -1,5 +1,6 @@
 <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAbstractProgressBar_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F56d039fe633a4adf8fb266a0b1797e6c17a000_003F40_003Fd60d7bd8_003FAbstractProgressBar_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAppStatusBar_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F1f63769030ae497a94b35af8517071579d5a00_003Fbc_003F8cd214f9_003FAppStatusBar_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAsyncInstantiateOperationHelper_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5c4a01f363eb46748231fc41bd9bdd8517e000_003F3b_003F82aeb7a5_003FAsyncInstantiateOperationHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACollectionExtensions_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fde80aed0bd3646409e8bfb15c101f005e2000_003Fb3_003F5c77f01e_003FCollectionExtensions_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACollider_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2193ba18cb0546b2832917f7674384cf20000_003F3a_003Fa0da6a1e_003FCollider_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@@ -33,6 +34,7 @@
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AShaderVariantCollection_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5c4a01f363eb46748231fc41bd9bdd8517e000_003F8c_003F3e54d954_003FShaderVariantCollection_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASingle_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb18a8b3398e74bca86895881dd02956c573648_003F16_003F2be7d3ed_003FSingle_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AStyleSheet_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F56d039fe633a4adf8fb266a0b1797e6c17a000_003Fcb_003Fe0e387fe_003FStyleSheet_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATaskStatus_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F9c2967a135e648bdb993c5397a44991b573620_003F39_003F7aac61ac_003FTaskStatus_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATextAsset_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5c4a01f363eb46748231fc41bd9bdd8517e000_003F50_003F0344ee3c_003FTextAsset_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe4df6db7850b4c40b72002ff5da8188846ac00_003F3b_003F1a234af4_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATime_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F52d61f6cbc024a7eab0cd1f462e4bc53104c00_003Fc6_003F8739ef35_003FTime_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>

部分文件因为文件数量过多而无法显示