58 changed files with 3283 additions and 1492 deletions
@ -1,131 +0,0 @@ |
|||||
%YAML 1.1 |
|
||||
%TAG !u! tag:unity3d.com,2011: |
|
||||
--- !u!1 &1496019408761085200 |
|
||||
GameObject: |
|
||||
m_ObjectHideFlags: 0 |
|
||||
m_CorrespondingSourceObject: {fileID: 0} |
|
||||
m_PrefabInstance: {fileID: 0} |
|
||||
m_PrefabAsset: {fileID: 0} |
|
||||
serializedVersion: 6 |
|
||||
m_Component: |
|
||||
- component: {fileID: 5563030652977735299} |
|
||||
m_Layer: 0 |
|
||||
m_Name: GameObject |
|
||||
m_TagString: Untagged |
|
||||
m_Icon: {fileID: 0} |
|
||||
m_NavMeshLayer: 0 |
|
||||
m_StaticEditorFlags: 0 |
|
||||
m_IsActive: 1 |
|
||||
--- !u!4 &5563030652977735299 |
|
||||
Transform: |
|
||||
m_ObjectHideFlags: 0 |
|
||||
m_CorrespondingSourceObject: {fileID: 0} |
|
||||
m_PrefabInstance: {fileID: 0} |
|
||||
m_PrefabAsset: {fileID: 0} |
|
||||
m_GameObject: {fileID: 1496019408761085200} |
|
||||
serializedVersion: 2 |
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|
||||
m_LocalPosition: {x: 0, y: 1.17, z: 0} |
|
||||
m_LocalScale: {x: 1, y: 1, z: 1} |
|
||||
m_ConstrainProportionsScale: 1 |
|
||||
m_Children: [] |
|
||||
m_Father: {fileID: 6047049870113643063} |
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|
||||
--- !u!1 &2458175114420723768 |
|
||||
GameObject: |
|
||||
m_ObjectHideFlags: 0 |
|
||||
m_CorrespondingSourceObject: {fileID: 0} |
|
||||
m_PrefabInstance: {fileID: 0} |
|
||||
m_PrefabAsset: {fileID: 0} |
|
||||
serializedVersion: 6 |
|
||||
m_Component: |
|
||||
- component: {fileID: 6047049870113643063} |
|
||||
- component: {fileID: 4354208083307919355} |
|
||||
- component: {fileID: 3998761273940534422} |
|
||||
m_Layer: 0 |
|
||||
m_Name: Whirlpool |
|
||||
m_TagString: Untagged |
|
||||
m_Icon: {fileID: 0} |
|
||||
m_NavMeshLayer: 0 |
|
||||
m_StaticEditorFlags: 0 |
|
||||
m_IsActive: 1 |
|
||||
--- !u!4 &6047049870113643063 |
|
||||
Transform: |
|
||||
m_ObjectHideFlags: 0 |
|
||||
m_CorrespondingSourceObject: {fileID: 0} |
|
||||
m_PrefabInstance: {fileID: 0} |
|
||||
m_PrefabAsset: {fileID: 0} |
|
||||
m_GameObject: {fileID: 2458175114420723768} |
|
||||
serializedVersion: 2 |
|
||||
m_LocalRotation: {x: 0, y: 0.13052616, z: 0, w: 0.9914449} |
|
||||
m_LocalPosition: {x: 3.592, y: 1, z: -1.2736247} |
|
||||
m_LocalScale: {x: 0.9, y: 0.9, z: 0.9} |
|
||||
m_ConstrainProportionsScale: 1 |
|
||||
m_Children: |
|
||||
- {fileID: 5563030652977735299} |
|
||||
m_Father: {fileID: 0} |
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 15, z: 0} |
|
||||
--- !u!212 &4354208083307919355 |
|
||||
SpriteRenderer: |
|
||||
m_ObjectHideFlags: 0 |
|
||||
m_CorrespondingSourceObject: {fileID: 0} |
|
||||
m_PrefabInstance: {fileID: 0} |
|
||||
m_PrefabAsset: {fileID: 0} |
|
||||
m_GameObject: {fileID: 2458175114420723768} |
|
||||
m_Enabled: 1 |
|
||||
m_CastShadows: 0 |
|
||||
m_ReceiveShadows: 0 |
|
||||
m_DynamicOccludee: 1 |
|
||||
m_StaticShadowCaster: 0 |
|
||||
m_MotionVectors: 1 |
|
||||
m_LightProbeUsage: 1 |
|
||||
m_ReflectionProbeUsage: 1 |
|
||||
m_RayTracingMode: 0 |
|
||||
m_RayTraceProcedural: 0 |
|
||||
m_RenderingLayerMask: 1 |
|
||||
m_RendererPriority: 0 |
|
||||
m_Materials: |
|
||||
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} |
|
||||
m_StaticBatchInfo: |
|
||||
firstSubMesh: 0 |
|
||||
subMeshCount: 0 |
|
||||
m_StaticBatchRoot: {fileID: 0} |
|
||||
m_ProbeAnchor: {fileID: 0} |
|
||||
m_LightProbeVolumeOverride: {fileID: 0} |
|
||||
m_ScaleInLightmap: 1 |
|
||||
m_ReceiveGI: 1 |
|
||||
m_PreserveUVs: 0 |
|
||||
m_IgnoreNormalsForChartDetection: 0 |
|
||||
m_ImportantGI: 0 |
|
||||
m_StitchLightmapSeams: 1 |
|
||||
m_SelectedEditorRenderState: 0 |
|
||||
m_MinimumChartSize: 4 |
|
||||
m_AutoUVMaxDistance: 0.5 |
|
||||
m_AutoUVMaxAngle: 89 |
|
||||
m_LightmapParameters: {fileID: 0} |
|
||||
m_SortingLayerID: 0 |
|
||||
m_SortingLayer: 0 |
|
||||
m_SortingOrder: 2 |
|
||||
m_Sprite: {fileID: 21300000, guid: f9ca4d2a420a8f14b8ff292551fc0001, type: 3} |
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1} |
|
||||
m_FlipX: 0 |
|
||||
m_FlipY: 0 |
|
||||
m_DrawMode: 0 |
|
||||
m_Size: {x: 1.923, y: 1.879} |
|
||||
m_AdaptiveModeThreshold: 0.5 |
|
||||
m_SpriteTileMode: 0 |
|
||||
m_WasSpriteAssigned: 1 |
|
||||
m_MaskInteraction: 0 |
|
||||
m_SpriteSortPoint: 0 |
|
||||
--- !u!114 &3998761273940534422 |
|
||||
MonoBehaviour: |
|
||||
m_ObjectHideFlags: 0 |
|
||||
m_CorrespondingSourceObject: {fileID: 0} |
|
||||
m_PrefabInstance: {fileID: 0} |
|
||||
m_PrefabAsset: {fileID: 0} |
|
||||
m_GameObject: {fileID: 2458175114420723768} |
|
||||
m_Enabled: 1 |
|
||||
m_EditorHideFlags: 0 |
|
||||
m_Script: {fileID: 11500000, guid: 8e1d4d1a606d36b43ae3dd2b9a98896f, type: 3} |
|
||||
m_Name: |
|
||||
m_EditorClassIdentifier: |
|
||||
@ -1,5 +1,5 @@ |
|||||
fileFormatVersion: 2 |
fileFormatVersion: 2 |
||||
guid: 8530888d5a27b2741a53af50312ea8fe |
guid: d568482e910ee3943abf3fad34ef25ae |
||||
folderAsset: yes |
folderAsset: yes |
||||
DefaultImporter: |
DefaultImporter: |
||||
externalObjects: {} |
externalObjects: {} |
||||
@ -0,0 +1,377 @@ |
|||||
|
%YAML 1.1 |
||||
|
%TAG !u! tag:unity3d.com,2011: |
||||
|
--- !u!1 &791787655015542540 |
||||
|
GameObject: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
serializedVersion: 6 |
||||
|
m_Component: |
||||
|
- component: {fileID: 3507841565684247920} |
||||
|
- component: {fileID: 9192163590229144868} |
||||
|
- component: {fileID: 780701334481676733} |
||||
|
- component: {fileID: 4869295605941821901} |
||||
|
m_Layer: 0 |
||||
|
m_Name: Canvas |
||||
|
m_TagString: Untagged |
||||
|
m_Icon: {fileID: 0} |
||||
|
m_NavMeshLayer: 0 |
||||
|
m_StaticEditorFlags: 0 |
||||
|
m_IsActive: 1 |
||||
|
--- !u!224 &3507841565684247920 |
||||
|
RectTransform: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 791787655015542540} |
||||
|
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} |
||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||
|
m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} |
||||
|
m_ConstrainProportionsScale: 1 |
||||
|
m_Children: |
||||
|
- {fileID: 5757482445103523294} |
||||
|
m_Father: {fileID: 6047049870113643063} |
||||
|
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} |
||||
|
m_AnchorMin: {x: 0, y: 0} |
||||
|
m_AnchorMax: {x: 0, y: 0} |
||||
|
m_AnchoredPosition: {x: 0, y: 0.33} |
||||
|
m_SizeDelta: {x: 1, y: 1} |
||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||
|
--- !u!223 &9192163590229144868 |
||||
|
Canvas: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 791787655015542540} |
||||
|
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: 0 |
||||
|
m_UpdateRectTransformForStandalone: 0 |
||||
|
m_SortingLayerID: 801241541 |
||||
|
m_SortingOrder: 0 |
||||
|
m_TargetDisplay: 0 |
||||
|
--- !u!114 &780701334481676733 |
||||
|
MonoBehaviour: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 791787655015542540} |
||||
|
m_Enabled: 1 |
||||
|
m_EditorHideFlags: 0 |
||||
|
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} |
||||
|
m_Name: |
||||
|
m_EditorClassIdentifier: |
||||
|
m_UiScaleMode: 0 |
||||
|
m_ReferencePixelsPerUnit: 100 |
||||
|
m_ScaleFactor: 1 |
||||
|
m_ReferenceResolution: {x: 800, y: 600} |
||||
|
m_ScreenMatchMode: 0 |
||||
|
m_MatchWidthOrHeight: 0 |
||||
|
m_PhysicalUnit: 3 |
||||
|
m_FallbackScreenDPI: 96 |
||||
|
m_DefaultSpriteDPI: 96 |
||||
|
m_DynamicPixelsPerUnit: 1 |
||||
|
m_PresetInfoIsWorld: 1 |
||||
|
--- !u!114 &4869295605941821901 |
||||
|
MonoBehaviour: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 791787655015542540} |
||||
|
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: 4294967295 |
||||
|
--- !u!1 &2458175114420723768 |
||||
|
GameObject: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
serializedVersion: 6 |
||||
|
m_Component: |
||||
|
- component: {fileID: 6047049870113643063} |
||||
|
- component: {fileID: 4354208083307919355} |
||||
|
- component: {fileID: 3998761273940534422} |
||||
|
- component: {fileID: 8508715456860937413} |
||||
|
m_Layer: 0 |
||||
|
m_Name: Whirlpool |
||||
|
m_TagString: Untagged |
||||
|
m_Icon: {fileID: 0} |
||||
|
m_NavMeshLayer: 0 |
||||
|
m_StaticEditorFlags: 0 |
||||
|
m_IsActive: 1 |
||||
|
--- !u!4 &6047049870113643063 |
||||
|
Transform: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 2458175114420723768} |
||||
|
serializedVersion: 2 |
||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||
|
m_LocalPosition: {x: 3.592, y: 1, z: -1.2736247} |
||||
|
m_LocalScale: {x: 0.9, y: 0.9, z: 0.9} |
||||
|
m_ConstrainProportionsScale: 1 |
||||
|
m_Children: |
||||
|
- {fileID: 3507841565684247920} |
||||
|
m_Father: {fileID: 0} |
||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||
|
--- !u!212 &4354208083307919355 |
||||
|
SpriteRenderer: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 2458175114420723768} |
||||
|
m_Enabled: 1 |
||||
|
m_CastShadows: 0 |
||||
|
m_ReceiveShadows: 0 |
||||
|
m_DynamicOccludee: 1 |
||||
|
m_StaticShadowCaster: 0 |
||||
|
m_MotionVectors: 1 |
||||
|
m_LightProbeUsage: 1 |
||||
|
m_ReflectionProbeUsage: 1 |
||||
|
m_RayTracingMode: 0 |
||||
|
m_RayTraceProcedural: 0 |
||||
|
m_RenderingLayerMask: 1 |
||||
|
m_RendererPriority: 0 |
||||
|
m_Materials: |
||||
|
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} |
||||
|
m_StaticBatchInfo: |
||||
|
firstSubMesh: 0 |
||||
|
subMeshCount: 0 |
||||
|
m_StaticBatchRoot: {fileID: 0} |
||||
|
m_ProbeAnchor: {fileID: 0} |
||||
|
m_LightProbeVolumeOverride: {fileID: 0} |
||||
|
m_ScaleInLightmap: 1 |
||||
|
m_ReceiveGI: 1 |
||||
|
m_PreserveUVs: 0 |
||||
|
m_IgnoreNormalsForChartDetection: 0 |
||||
|
m_ImportantGI: 0 |
||||
|
m_StitchLightmapSeams: 1 |
||||
|
m_SelectedEditorRenderState: 0 |
||||
|
m_MinimumChartSize: 4 |
||||
|
m_AutoUVMaxDistance: 0.5 |
||||
|
m_AutoUVMaxAngle: 89 |
||||
|
m_LightmapParameters: {fileID: 0} |
||||
|
m_SortingLayerID: 0 |
||||
|
m_SortingLayer: 0 |
||||
|
m_SortingOrder: 2 |
||||
|
m_Sprite: {fileID: 21300000, guid: f9ca4d2a420a8f14b8ff292551fc0001, type: 3} |
||||
|
m_Color: {r: 1, g: 1, b: 1, a: 0} |
||||
|
m_FlipX: 0 |
||||
|
m_FlipY: 0 |
||||
|
m_DrawMode: 0 |
||||
|
m_Size: {x: 1.923, y: 1.879} |
||||
|
m_AdaptiveModeThreshold: 0.5 |
||||
|
m_SpriteTileMode: 0 |
||||
|
m_WasSpriteAssigned: 1 |
||||
|
m_MaskInteraction: 0 |
||||
|
m_SpriteSortPoint: 0 |
||||
|
--- !u!114 &3998761273940534422 |
||||
|
MonoBehaviour: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 2458175114420723768} |
||||
|
m_Enabled: 1 |
||||
|
m_EditorHideFlags: 0 |
||||
|
m_Script: {fileID: 11500000, guid: 8e1d4d1a606d36b43ae3dd2b9a98896f, type: 3} |
||||
|
m_Name: |
||||
|
m_EditorClassIdentifier: |
||||
|
posX: 0 |
||||
|
posY: 0 |
||||
|
holdColorCount: 7 |
||||
|
holdeText: {fileID: 1137274421971972761} |
||||
|
holdPool: [] |
||||
|
--- !u!114 &8508715456860937413 |
||||
|
MonoBehaviour: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 2458175114420723768} |
||||
|
m_Enabled: 1 |
||||
|
m_EditorHideFlags: 0 |
||||
|
m_Script: {fileID: 11500000, guid: d99a212ab38d69947b365e3770680781, type: 3} |
||||
|
m_Name: |
||||
|
m_EditorClassIdentifier: |
||||
|
takeOverType: 0 |
||||
|
blockType: 1 |
||||
|
--- !u!1 &2956698644888883949 |
||||
|
GameObject: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
serializedVersion: 6 |
||||
|
m_Component: |
||||
|
- component: {fileID: 666127146751557209} |
||||
|
- component: {fileID: 4527207791058968114} |
||||
|
- component: {fileID: 1137274421971972761} |
||||
|
m_Layer: 0 |
||||
|
m_Name: Text (Legacy) |
||||
|
m_TagString: Untagged |
||||
|
m_Icon: {fileID: 0} |
||||
|
m_NavMeshLayer: 0 |
||||
|
m_StaticEditorFlags: 0 |
||||
|
m_IsActive: 1 |
||||
|
--- !u!224 &666127146751557209 |
||||
|
RectTransform: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 2956698644888883949} |
||||
|
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: 5757482445103523294} |
||||
|
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 &4527207791058968114 |
||||
|
CanvasRenderer: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 2956698644888883949} |
||||
|
m_CullTransparentMesh: 1 |
||||
|
--- !u!114 &1137274421971972761 |
||||
|
MonoBehaviour: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 2956698644888883949} |
||||
|
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.19607843, g: 0.19607843, b: 0.19607843, 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: 12800000, guid: 846d2bc064c8faa4a858510d85bd7140, type: 3} |
||||
|
m_FontSize: 45 |
||||
|
m_FontStyle: 0 |
||||
|
m_BestFit: 0 |
||||
|
m_MinSize: 3 |
||||
|
m_MaxSize: 45 |
||||
|
m_Alignment: 4 |
||||
|
m_AlignByGeometry: 0 |
||||
|
m_RichText: 1 |
||||
|
m_HorizontalOverflow: 0 |
||||
|
m_VerticalOverflow: 0 |
||||
|
m_LineSpacing: 1 |
||||
|
m_Text: 7 |
||||
|
--- !u!1 &8745365788768358793 |
||||
|
GameObject: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
serializedVersion: 6 |
||||
|
m_Component: |
||||
|
- component: {fileID: 5757482445103523294} |
||||
|
- component: {fileID: 1406558591327533686} |
||||
|
- component: {fileID: 6754258001192525857} |
||||
|
m_Layer: 0 |
||||
|
m_Name: Panel |
||||
|
m_TagString: Untagged |
||||
|
m_Icon: {fileID: 0} |
||||
|
m_NavMeshLayer: 0 |
||||
|
m_StaticEditorFlags: 0 |
||||
|
m_IsActive: 1 |
||||
|
--- !u!224 &5757482445103523294 |
||||
|
RectTransform: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 8745365788768358793} |
||||
|
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: 666127146751557209} |
||||
|
m_Father: {fileID: 3507841565684247920} |
||||
|
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: 99, y: 99} |
||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||
|
--- !u!222 &1406558591327533686 |
||||
|
CanvasRenderer: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 8745365788768358793} |
||||
|
m_CullTransparentMesh: 1 |
||||
|
--- !u!114 &6754258001192525857 |
||||
|
MonoBehaviour: |
||||
|
m_ObjectHideFlags: 0 |
||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||
|
m_PrefabInstance: {fileID: 0} |
||||
|
m_PrefabAsset: {fileID: 0} |
||||
|
m_GameObject: {fileID: 8745365788768358793} |
||||
|
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: 0.392} |
||||
|
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 |
||||
File diff suppressed because it is too large
@ -1,5 +1,5 @@ |
|||||
fileFormatVersion: 2 |
fileFormatVersion: 2 |
||||
guid: ab7664ff672480f459fb5c68b41dcc23 |
guid: 158addf8acf787245a6bc01d0b3fd919 |
||||
folderAsset: yes |
folderAsset: yes |
||||
DefaultImporter: |
DefaultImporter: |
||||
externalObjects: {} |
externalObjects: {} |
||||
@ -0,0 +1,64 @@ |
|||||
|
using System.Collections; |
||||
|
using System.Collections.Generic; |
||||
|
using UnityEngine; |
||||
|
|
||||
|
public class ItemTakerOverNode : MonoBehaviour |
||||
|
{ |
||||
|
public enum TakeOverType |
||||
|
{ |
||||
|
oneCenter, |
||||
|
oneCircle |
||||
|
} |
||||
|
public TakeOverType takeOverType; |
||||
|
public enum BlockType |
||||
|
{ |
||||
|
common, |
||||
|
whirlpool |
||||
|
} |
||||
|
public BlockType blockType; |
||||
|
|
||||
|
public HashSet<MapUnity> TakeOverCalculation(MapUnity currentMapUnity) |
||||
|
{ |
||||
|
HashSet <MapUnity > mapUnities = new HashSet <MapUnity >(); |
||||
|
switch (takeOverType) |
||||
|
{ |
||||
|
case TakeOverType.oneCenter: |
||||
|
if(currentMapUnity !=null && currentMapUnity .blocked ==false &¤tMapUnity .gameObject .activeInHierarchy ==true ) |
||||
|
{ |
||||
|
mapUnities .Add(currentMapUnity ); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
return null; |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
return mapUnities; |
||||
|
} |
||||
|
|
||||
|
public void GenerateBlockItem(MapUnity currentMapUnity,GameObject prefab) |
||||
|
{ |
||||
|
switch (blockType) |
||||
|
{ |
||||
|
case BlockType.common: |
||||
|
Vector3 pos = currentMapUnity.transform.position; |
||||
|
pos.y = 1; |
||||
|
var block = Instantiate(prefab, pos, Quaternion.identity); |
||||
|
currentMapUnity.enemyNode = block.GetComponent<EnemyNode>(); |
||||
|
currentMapUnity.enemyNode.positionX = currentMapUnity.locationX; |
||||
|
currentMapUnity.enemyNode.positionY = currentMapUnity.locationY; |
||||
|
currentMapUnity.blocked = true; |
||||
|
break; |
||||
|
case BlockType.whirlpool: |
||||
|
Vector3 pos2 = currentMapUnity.transform.position; |
||||
|
pos.y = 1; |
||||
|
var whirlpool = Instantiate(prefab, pos2, Quaternion.identity); |
||||
|
Whirlpool whirlpoolS = whirlpool.GetComponent<Whirlpool>(); |
||||
|
whirlpoolS.posX = currentMapUnity.locationX; |
||||
|
whirlpoolS.posY = currentMapUnity.locationY; |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
fileFormatVersion: 2 |
||||
|
guid: d99a212ab38d69947b365e3770680781 |
||||
|
MonoImporter: |
||||
|
externalObjects: {} |
||||
|
serializedVersion: 2 |
||||
|
defaultReferences: [] |
||||
|
executionOrder: 0 |
||||
|
icon: {instanceID: 0} |
||||
|
userData: |
||||
|
assetBundleName: |
||||
|
assetBundleVariant: |
||||
@ -0,0 +1,842 @@ |
|||||
|
using System.Collections; |
||||
|
using System.Collections.Generic; |
||||
|
using System.IO; |
||||
|
using System.Linq; |
||||
|
using UnityEngine; |
||||
|
using static LevelDevelopManager; |
||||
|
|
||||
|
public class LeveGeneraterNew : Singleton<LeveGeneraterNew> |
||||
|
{ |
||||
|
public GameObject generatorPoint;//初始位置
|
||||
|
public Vector3 originalPoint; |
||||
|
|
||||
|
[Header("节点生成行(横)")] |
||||
|
public int generatorLine; |
||||
|
[Header("节点生成列(竖)")] |
||||
|
public int generatorColumn; |
||||
|
|
||||
|
[Header("节点生成列(竖)间距")] |
||||
|
public float lineOffset; |
||||
|
[Header("节点生成行(横)间距")] |
||||
|
public float columnOffset; |
||||
|
|
||||
|
[Header("生成路线数量")] |
||||
|
public int pathAmount; |
||||
|
|
||||
|
[Header("特定房间生成层数")] |
||||
|
//宝箱
|
||||
|
public int treasureFloor; |
||||
|
//锻造
|
||||
|
public int forgingFloor; |
||||
|
//随机战
|
||||
|
public List<int> randomFightFloor; |
||||
|
//普通战
|
||||
|
public List<int> normalFightFloor; |
||||
|
//随机奖励节点
|
||||
|
public List<int> rewardNodeFloor; |
||||
|
public List <RoomType> randomRoomTypeWeightBase; |
||||
|
public List<RoomType> randomRoomTypeWeightAttach; |
||||
|
|
||||
|
|
||||
|
[Header("节点生成资源")] |
||||
|
public GameObject levelPrefab; |
||||
|
public GameObject levelBossPrefab; |
||||
|
|
||||
|
[Header("怪物池地图概率字典")] |
||||
|
public string enemyPoolFileName; |
||||
|
Dictionary<int, List<string>> probabilityDictionaryWeak = new Dictionary<int, List<string>>(); |
||||
|
Dictionary<int, List<string>> probabilityDictionaryStrong = new Dictionary<int, List<string>>(); |
||||
|
Dictionary<int, List<string>> probabilityDictionaryElite = new Dictionary<int, List<string>>(); |
||||
|
Dictionary<int, List<string>> probabilityDictionaryBoss = new Dictionary<int, List<string>>(); |
||||
|
private void Start() |
||||
|
{ |
||||
|
originalPoint = generatorPoint.transform.position; |
||||
|
if (LevelDevelopManager.Instance.levelDevelopData.levelStep == 0) |
||||
|
{ |
||||
|
GenerateLevelMap(generatorLine, generatorColumn); |
||||
|
//存储保存数据
|
||||
|
SaveDataLoader(); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
GeneratorLevelMapFormSave(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
public void GenerateLevelMap(int generatorLine, int generatorColumn) |
||||
|
{ |
||||
|
GenerateGridMap(generatorLine, generatorColumn); |
||||
|
GeneratePath(); |
||||
|
RandomSetUpRoom(); |
||||
|
// CheckNodeRule();
|
||||
|
ShowMap(); |
||||
|
SetRoomEnemyPoolAndMap(); |
||||
|
} |
||||
|
//生成网格
|
||||
|
public void GenerateGridMap(int generatorLine, int generatorColumn) |
||||
|
{ |
||||
|
|
||||
|
for (int i = 0; i < generatorLine; i++) |
||||
|
{ |
||||
|
if (i == generatorLine - 1) |
||||
|
{ |
||||
|
|
||||
|
for (int j = 0; j < generatorColumn; j++) |
||||
|
{ |
||||
|
generatorPoint.transform.position = new Vector3(generatorPoint.transform.position.x, generatorPoint.transform.position.y, generatorPoint.transform.position.z + lineOffset); |
||||
|
|
||||
|
var level = Instantiate(levelBossPrefab, generatorPoint.transform.position, levelPrefab.transform.rotation); |
||||
|
level.transform.SetParent(LevelDevelopManager.Instance.levelFather.transform); |
||||
|
level.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); |
||||
|
level.transform.localPosition += new Vector3(0, 5f, 0); |
||||
|
LevelNode bossLevelNode = level.GetComponent<LevelNode>(); |
||||
|
bossLevelNode.line = i; |
||||
|
bossLevelNode.column = j; |
||||
|
LevelDevelopManager.Instance.levelMap[i].levelColumn.Add(bossLevelNode); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
for (int j = 0; j < generatorColumn; j++) |
||||
|
{ |
||||
|
generatorPoint.transform.position = new Vector3(generatorPoint.transform.position.x, generatorPoint.transform.position.y, generatorPoint.transform.position.z + lineOffset); |
||||
|
|
||||
|
GenerateLevelNode(i, j, generatorPoint.transform.position); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
generatorPoint.transform.position = new Vector3(generatorPoint.transform.position.x + columnOffset, generatorPoint.transform.position.y, originalPoint.z); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//生成路线
|
||||
|
public void GeneratePath() |
||||
|
{ |
||||
|
List<LevelList> levelMap = LevelDevelopManager.Instance.levelMap; |
||||
|
for (int i=0;i<generatorLine;i++) |
||||
|
{ |
||||
|
if (i < 2) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[0].gameObject.SetActive(false); |
||||
|
levelMap[i].levelColumn[2].gameObject.SetActive(false); |
||||
|
levelMap[i].levelColumn[1].isUse = true; |
||||
|
|
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
if (i==1) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[0]); |
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[2]); |
||||
|
levelMap[i].levelColumn[1].fatherLevelNodes.Add(levelMap[i - 1].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[0].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[2].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
} |
||||
|
} |
||||
|
else if (i < 5) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[0].isUse = true; |
||||
|
levelMap[i].levelColumn[2].isUse = true; |
||||
|
levelMap[i].levelColumn[1].isUse = true; |
||||
|
|
||||
|
if(i!=4) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[0].nextLevelNodes.Add(levelMap[i + 1].levelColumn[0]); |
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
levelMap[i].levelColumn[2].nextLevelNodes.Add(levelMap[i + 1].levelColumn[2]); |
||||
|
if (i != 2) |
||||
|
{ |
||||
|
levelMap[i + 1].levelColumn[0].fatherLevelNodes.Add(levelMap[i].levelColumn[0]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[2].fatherLevelNodes.Add(levelMap[i].levelColumn[2]); |
||||
|
} |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
levelMap[i].levelColumn[0].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
levelMap[i].levelColumn[2].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[0]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[2]); |
||||
|
} |
||||
|
} |
||||
|
else if (i < 7) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[0].gameObject.SetActive(false); |
||||
|
levelMap[i].levelColumn[2].gameObject.SetActive(false); |
||||
|
levelMap[i].levelColumn[1].isUse = true; |
||||
|
|
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
if (i == 6) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[0]); |
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[2]); |
||||
|
levelMap[i].levelColumn[1].fatherLevelNodes.Add(levelMap[i - 1].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[0].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[2].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
} |
||||
|
} |
||||
|
else if(i<10) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[0].isUse = true; |
||||
|
levelMap[i].levelColumn[2].isUse = true; |
||||
|
levelMap[i].levelColumn[1].isUse = true; |
||||
|
|
||||
|
if (i != 9) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[0].nextLevelNodes.Add(levelMap[i + 1].levelColumn[0]); |
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
levelMap[i].levelColumn[2].nextLevelNodes.Add(levelMap[i + 1].levelColumn[2]); |
||||
|
if (i != 7) |
||||
|
{ |
||||
|
levelMap[i + 1].levelColumn[0].fatherLevelNodes.Add(levelMap[i].levelColumn[0]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[2].fatherLevelNodes.Add(levelMap[i].levelColumn[2]); |
||||
|
} |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
levelMap[i].levelColumn[0].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
levelMap[i].levelColumn[2].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[0]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[1]); |
||||
|
levelMap[i + 1].levelColumn[1].fatherLevelNodes.Add(levelMap[i].levelColumn[2]); |
||||
|
} |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
levelMap[i].levelColumn[0].gameObject.SetActive(false); |
||||
|
levelMap[i].levelColumn[2].gameObject.SetActive(false); |
||||
|
levelMap[i].levelColumn[1].isUse = true; |
||||
|
|
||||
|
if(i!= generatorLine-1) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[1].nextLevelNodes.Add(levelMap[i + 1].levelColumn[1]); |
||||
|
} |
||||
|
if(i!=10) |
||||
|
{ |
||||
|
levelMap[i].levelColumn[1].fatherLevelNodes.Add(levelMap[i - 1].levelColumn[1]); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
/* int currentColum = column; |
||||
|
LevelDevelopManager.Instance.levelMap[0].levelColumn[currentColum].isUse = true; |
||||
|
|
||||
|
//生成路线表
|
||||
|
List<int> path = new List<int>(); |
||||
|
path.Add(LevelDevelopManager.Instance.levelMap[0].levelColumn[currentColum].column);//加入起点
|
||||
|
|
||||
|
|
||||
|
LevelNode LevelNode = LevelDevelopManager.Instance.levelMap[line - 1].levelColumn[currentColum]; |
||||
|
LevelNode nextLevelNode = LevelDevelopManager.Instance.levelMap[line].levelColumn[generatorColumn / 2]; |
||||
|
LevelNode.nextLevelNodes.Add(nextLevelNode); |
||||
|
nextLevelNode.fatherLevelNodes.Add(LevelNode); |
||||
|
nextLevelNode.isUse = true; |
||||
|
|
||||
|
int pathOffset = Random.Range(-1, 2); |
||||
|
if (CheckChoosePath(line, currentColum, pathOffset)) |
||||
|
{ |
||||
|
LevelNode LevelNode = LevelDevelopManager.Instance.levelMap[line - 1].levelColumn[currentColum]; |
||||
|
currentColum += pathOffset; |
||||
|
LevelNode nextLevelNode = LevelDevelopManager.Instance.levelMap[line].levelColumn[currentColum]; |
||||
|
|
||||
|
if (!LevelNode.nextLevelNodes.Contains(nextLevelNode)) |
||||
|
LevelNode.nextLevelNodes.Add(nextLevelNode); |
||||
|
if (!nextLevelNode.fatherLevelNodes.Contains(LevelNode)) |
||||
|
nextLevelNode.fatherLevelNodes.Add(LevelNode); |
||||
|
nextLevelNode.isUse = true; |
||||
|
|
||||
|
//加入路线表
|
||||
|
path.Add(nextLevelNode.column); |
||||
|
break; |
||||
|
}*/ |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
//检查路线选择是否合理
|
||||
|
public bool CheckChoosePath(int line, int column, int pathOffset) |
||||
|
{ |
||||
|
int nextcolumn = (column + pathOffset); |
||||
|
if (nextcolumn < 0 || nextcolumn > generatorColumn - 1) |
||||
|
{ |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
if (pathOffset == -1) |
||||
|
{ |
||||
|
LevelNode levelNode = LevelDevelopManager.Instance.levelMap[line - 1].levelColumn[column - 1]; |
||||
|
if (levelNode.isUse == true) |
||||
|
{ |
||||
|
foreach (var node in levelNode.nextLevelNodes) |
||||
|
{ |
||||
|
if (node.column > nextcolumn) |
||||
|
{ |
||||
|
return false; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (pathOffset == 1) |
||||
|
{ |
||||
|
LevelNode levelNode = LevelDevelopManager.Instance.levelMap[line - 1].levelColumn[column + 1]; |
||||
|
if (levelNode.isUse == true) |
||||
|
{ |
||||
|
foreach (var node in levelNode.nextLevelNodes) |
||||
|
{ |
||||
|
if (node.column < nextcolumn) |
||||
|
{ |
||||
|
return false; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
//检查节点是否合理(分支目的地不同,保底精英)
|
||||
|
public void CheckNodeRule() |
||||
|
{ |
||||
|
for (int i = 0; i < LevelDevelopManager.Instance.levelMap.Count; i++) |
||||
|
{ |
||||
|
for (int j = 0; j < LevelDevelopManager.Instance.levelMap[i].levelColumn.Count; j++) |
||||
|
{ |
||||
|
LevelNode currentLevelNode = LevelDevelopManager.Instance.levelMap[i].levelColumn[j]; |
||||
|
if (currentLevelNode.isUse) |
||||
|
{ |
||||
|
if (currentLevelNode.nextLevelNodes.Count > 1 && i != treasureFloor - 1 && i != generatorLine - 3 && i != generatorLine - 2) |
||||
|
{ |
||||
|
Debug.Log(i); |
||||
|
List<LevelDevelopManager.RoomType> roomTypes = new List<LevelDevelopManager.RoomType>(); |
||||
|
foreach (var room in currentLevelNode.nextLevelNodes) |
||||
|
{ |
||||
|
if (!roomTypes.Contains(room.roomType)) |
||||
|
{ |
||||
|
Debug.Log(currentLevelNode.line + ";" + currentLevelNode.column + "过"); |
||||
|
roomTypes.Add(room.roomType); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
Debug.Log(currentLevelNode.line + ";" + currentLevelNode.column + "否"); |
||||
|
RandomGetOneRoom(currentLevelNode.nextLevelNodes, i, j); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//生成房间
|
||||
|
public LevelNode GenerateLevelNode(int line, int column, Vector3 pos) |
||||
|
{ |
||||
|
var level = Instantiate(levelPrefab, pos, levelPrefab.transform.rotation); |
||||
|
level.transform.SetParent(LevelDevelopManager.Instance.levelFather.transform); |
||||
|
level.transform.localScale = new Vector3(0.04f, 0.04f, 0.04f); |
||||
|
LevelNode levelNode = level.GetComponent<LevelNode>(); |
||||
|
levelNode.line = line; |
||||
|
levelNode.column = column; |
||||
|
LevelDevelopManager.Instance.levelMap[line].levelColumn.Add(levelNode); |
||||
|
|
||||
|
return levelNode; |
||||
|
} |
||||
|
//生成Boss房间
|
||||
|
public LevelNode GenerateLevelBossNode(int line, int column, Vector3 pos) |
||||
|
{ |
||||
|
var level = Instantiate(levelBossPrefab, pos, levelPrefab.transform.rotation); |
||||
|
level.transform.SetParent(LevelDevelopManager.Instance.levelFather.transform); |
||||
|
level.transform.localScale = new Vector3(0.04f, 0.04f, 0.04f); |
||||
|
LevelNode levelNode = level.GetComponent<LevelNode>(); |
||||
|
levelNode.line = line; |
||||
|
levelNode.column = column; |
||||
|
LevelDevelopManager.Instance.levelMap[line].levelColumn.Add(levelNode); |
||||
|
|
||||
|
return levelNode; |
||||
|
} |
||||
|
//按规则随机设定房间
|
||||
|
public void RandomSetUpRoom() |
||||
|
{ |
||||
|
List<LevelList> levelMap = LevelDevelopManager.Instance.levelMap; |
||||
|
for (int i = 0; i < generatorLine; i++) |
||||
|
{ |
||||
|
if (i == 0) |
||||
|
{ |
||||
|
//第一层是初始点
|
||||
|
foreach (var room in levelMap[i].levelColumn) |
||||
|
{ |
||||
|
room.SetUpRoom(RoomType.start); |
||||
|
} |
||||
|
} |
||||
|
else if (i == treasureFloor) |
||||
|
{ |
||||
|
//指定宝箱层
|
||||
|
foreach (var room in levelMap[i].levelColumn) |
||||
|
{ |
||||
|
room.SetUpRoom(RoomType.treasure); |
||||
|
} |
||||
|
} |
||||
|
else if (i == generatorLine - 2) |
||||
|
{ |
||||
|
//倒数第二层全是篝火
|
||||
|
foreach (var room in levelMap[i].levelColumn) |
||||
|
{ |
||||
|
room.SetUpRoom(RoomType.campfire); |
||||
|
} |
||||
|
} |
||||
|
else if (i == generatorLine - 1) |
||||
|
{ |
||||
|
//最后一层boss房
|
||||
|
foreach (var room in levelMap[i].levelColumn) |
||||
|
{ |
||||
|
room.SetUpRoom(RoomType.boss); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//阶段a的随机奖励生成
|
||||
|
List<List<LevelNode>> levelNodes = new List<List<LevelNode>>(); |
||||
|
List <LevelNode > aNode_1 = new List <LevelNode>(); |
||||
|
List<LevelNode> aNode_2 = new List<LevelNode>(); |
||||
|
List<LevelNode> bNode_1 = new List<LevelNode>(); |
||||
|
List<LevelNode> bNode_2 = new List<LevelNode>(); |
||||
|
for (int i = 0; i < 3; i++) |
||||
|
{ |
||||
|
aNode_1.Add(levelMap[rewardNodeFloor[0]].levelColumn[i]); |
||||
|
aNode_2.Add(levelMap[rewardNodeFloor[0]+2].levelColumn[i]); |
||||
|
|
||||
|
bNode_1.Add(levelMap[rewardNodeFloor[1]].levelColumn[i]); |
||||
|
bNode_2.Add(levelMap[rewardNodeFloor[1] + 2].levelColumn[i]); |
||||
|
} |
||||
|
levelNodes .Add(aNode_1); |
||||
|
levelNodes .Add(aNode_2); |
||||
|
levelNodes.Add(bNode_1); |
||||
|
levelNodes.Add(bNode_2); |
||||
|
int shopA_l = Random.Range(0, 2); |
||||
|
int shopA_C = Random.Range(0, levelNodes[shopA_l].Count); |
||||
|
int shopB_l = Random.Range(2, 4); |
||||
|
int shopB_C = Random.Range(0, levelNodes[shopB_l].Count); |
||||
|
levelNodes[shopA_l][shopA_C ].SetUpRoom(RoomType.shop); |
||||
|
levelNodes[shopB_l][shopB_C].SetUpRoom(RoomType.shop); |
||||
|
levelNodes[shopA_l][shopA_C] = null; |
||||
|
levelNodes[shopB_l][shopB_C] = null; |
||||
|
for (int i = 0; i <randomRoomTypeWeightBase.Count ; i++) |
||||
|
{ |
||||
|
RoomType roomType = randomRoomTypeWeightBase[ Random.Range(0, randomRoomTypeWeightBase.Count)]; |
||||
|
bool isGo = true; |
||||
|
while(isGo) |
||||
|
{ |
||||
|
int line = Random.Range(0, levelNodes.Count); |
||||
|
int cloum = Random.Range(0, levelNodes[line].Count); |
||||
|
LevelNode currentNode = levelNodes[line][cloum]; |
||||
|
if (currentNode!= null) |
||||
|
{ |
||||
|
switch (line) |
||||
|
{ |
||||
|
case 0: |
||||
|
if(levelMap[currentNode.line+2].levelColumn[currentNode.column].roomType !=roomType) |
||||
|
{ |
||||
|
currentNode.SetUpRoom(roomType); |
||||
|
levelNodes[line][cloum] = null; |
||||
|
randomRoomTypeWeightBase.Remove(roomType); |
||||
|
isGo = false; |
||||
|
} |
||||
|
break; |
||||
|
case 1: |
||||
|
if (levelMap[currentNode.line - 2].levelColumn[currentNode.column].roomType != roomType) |
||||
|
{ |
||||
|
currentNode.SetUpRoom(roomType); |
||||
|
levelNodes[line][cloum] = null; |
||||
|
randomRoomTypeWeightBase.Remove(roomType); |
||||
|
isGo = false; |
||||
|
} |
||||
|
break; |
||||
|
case 2: |
||||
|
if (levelMap[currentNode.line + 2].levelColumn[currentNode.column].roomType != roomType) |
||||
|
{ |
||||
|
currentNode.SetUpRoom(roomType); |
||||
|
levelNodes[line][cloum] = null; |
||||
|
randomRoomTypeWeightBase.Remove(roomType); |
||||
|
isGo = false; |
||||
|
} |
||||
|
break; |
||||
|
case 3: |
||||
|
if (levelMap[currentNode.line - 2].levelColumn[currentNode.column].roomType != roomType) |
||||
|
{ |
||||
|
currentNode.SetUpRoom(roomType); |
||||
|
levelNodes[line][cloum] = null; |
||||
|
randomRoomTypeWeightBase.Remove(roomType); |
||||
|
isGo = false; |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
for (int i = 0; i < 4; i++) |
||||
|
{ |
||||
|
RoomType roomType = randomRoomTypeWeightAttach[Random.Range(0, randomRoomTypeWeightAttach.Count)]; |
||||
|
bool isGo = true; |
||||
|
while (isGo) |
||||
|
{ |
||||
|
int line = Random.Range(0, levelNodes.Count); |
||||
|
int cloum = Random.Range(0, levelNodes[line].Count); |
||||
|
LevelNode currentNode = levelNodes[line][cloum]; |
||||
|
if (currentNode != null) |
||||
|
{ |
||||
|
switch (line) |
||||
|
{ |
||||
|
case 0: |
||||
|
if (levelMap[currentNode.line + 2].levelColumn[currentNode.column].roomType != roomType) |
||||
|
{ |
||||
|
currentNode.SetUpRoom(roomType); |
||||
|
levelNodes[line][cloum] = null; |
||||
|
randomRoomTypeWeightAttach.Remove(roomType); |
||||
|
isGo = false; |
||||
|
} |
||||
|
break; |
||||
|
case 1: |
||||
|
if (levelMap[currentNode.line - 2].levelColumn[currentNode.column].roomType != roomType) |
||||
|
{ |
||||
|
currentNode.SetUpRoom(roomType); |
||||
|
levelNodes[line][cloum] = null; |
||||
|
randomRoomTypeWeightAttach.Remove(roomType); |
||||
|
isGo = false; |
||||
|
} |
||||
|
break; |
||||
|
case 2: |
||||
|
if (levelMap[currentNode.line + 2].levelColumn[currentNode.column].roomType != roomType) |
||||
|
{ |
||||
|
currentNode.SetUpRoom(roomType); |
||||
|
levelNodes[line][cloum] = null; |
||||
|
randomRoomTypeWeightAttach.Remove(roomType); |
||||
|
isGo = false; |
||||
|
} |
||||
|
break; |
||||
|
case 3: |
||||
|
if (levelMap[currentNode.line - 2].levelColumn[currentNode.column].roomType != roomType) |
||||
|
{ |
||||
|
currentNode.SetUpRoom(roomType); |
||||
|
levelNodes[line][cloum] = null; |
||||
|
randomRoomTypeWeightAttach.Remove(roomType); |
||||
|
isGo = false; |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//判断下一个房间的所有子集是否有重复
|
||||
|
public void RandomGetOneRoom(List<LevelNode> nextLevelNodes, int line, int column) |
||||
|
{ |
||||
|
HashSet<LevelDevelopManager.RoomType> candidateRoomTypeList = new HashSet<LevelDevelopManager.RoomType>(); |
||||
|
|
||||
|
while (true) |
||||
|
{ |
||||
|
candidateRoomTypeList.Clear(); |
||||
|
|
||||
|
for (int i = 0; i < nextLevelNodes.Count; i++) |
||||
|
{ |
||||
|
bool contravenes = true; |
||||
|
LevelDevelopManager.RoomType candidateRoomType = LevelDevelopManager.RoomType.monster; |
||||
|
while (contravenes) |
||||
|
{ |
||||
|
contravenes = false; |
||||
|
|
||||
|
//candidateRoomType = GetRoomTypeByWeight();//获取后选房间类型
|
||||
|
LevelNode currentLevelNode = nextLevelNodes[i]; |
||||
|
|
||||
|
switch (candidateRoomType) |
||||
|
{ |
||||
|
case LevelDevelopManager.RoomType.monster: |
||||
|
|
||||
|
break; |
||||
|
case LevelDevelopManager.RoomType.eliteMonster: |
||||
|
foreach (var fatherRoom in currentLevelNode.fatherLevelNodes) |
||||
|
{ |
||||
|
if (fatherRoom.roomType == LevelDevelopManager.RoomType.eliteMonster || line < 5) |
||||
|
{ |
||||
|
contravenes = true; |
||||
|
} |
||||
|
} |
||||
|
break; |
||||
|
case LevelDevelopManager.RoomType.incident: |
||||
|
|
||||
|
break; |
||||
|
case LevelDevelopManager.RoomType.campfire: |
||||
|
foreach (var fatherRoom in currentLevelNode.fatherLevelNodes) |
||||
|
{ |
||||
|
if (fatherRoom.roomType == LevelDevelopManager.RoomType.campfire || line == generatorLine - 3 || line < 5) |
||||
|
{ |
||||
|
contravenes = true; |
||||
|
} |
||||
|
} |
||||
|
break; |
||||
|
case LevelDevelopManager.RoomType.shop: |
||||
|
foreach (var fatherRoom in currentLevelNode.fatherLevelNodes) |
||||
|
{ |
||||
|
if (fatherRoom.roomType == LevelDevelopManager.RoomType.shop) |
||||
|
{ |
||||
|
contravenes = true; |
||||
|
} |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
candidateRoomTypeList.Add(candidateRoomType); |
||||
|
} |
||||
|
|
||||
|
if (candidateRoomTypeList.Count == nextLevelNodes.Count) |
||||
|
{ |
||||
|
|
||||
|
List<LevelDevelopManager.RoomType> roomTypes = candidateRoomTypeList.ToList(); |
||||
|
for (int k = 0; k < nextLevelNodes.Count; k++) |
||||
|
{ |
||||
|
Debug.Log(roomTypes[k]); |
||||
|
nextLevelNodes[k].SetUpRoom(roomTypes[k]); |
||||
|
} |
||||
|
|
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
//显示连线,设置能否进入
|
||||
|
public void ShowMap() |
||||
|
{ |
||||
|
for (int i = 0; i < LevelDevelopManager.Instance.levelMap.Count; i++) |
||||
|
{ |
||||
|
for (int j = 0; j < LevelDevelopManager.Instance.levelMap[i].levelColumn.Count; j++) |
||||
|
{ |
||||
|
if (LevelDevelopManager.Instance.levelMap[i].levelColumn[j].isUse == false) |
||||
|
{ |
||||
|
LevelDevelopManager.Instance.levelMap[i].levelColumn[j].gameObject.SetActive(false); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
LevelDevelopManager.Instance.levelMap[i].levelColumn[j].GetComponent<LevelNode>().LineShow(); |
||||
|
} |
||||
|
LevelDevelopManager.Instance.levelMap[i].levelColumn[j].GetComponent<LevelNode>().JudgeCanEnter(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//载入保存数据
|
||||
|
public void SaveDataLoader() |
||||
|
{ |
||||
|
for (int i = 0; i < LevelDevelopManager.Instance.levelMap.Count; i++) |
||||
|
{ |
||||
|
LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList.Clear(); |
||||
|
for (int j = 0; j < LevelDevelopManager.Instance.levelMap[i].levelColumn.Count; j++) |
||||
|
{ |
||||
|
LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList.Add(LevelDevelopManager.Instance.levelMap[i].levelColumn[j].ReturnSaveData()); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//根据保存的信息生成地图
|
||||
|
public void GeneratorLevelMapFormSave() |
||||
|
{ |
||||
|
for (int i = 0; i < LevelDevelopManager.Instance.levelDevelopData.levelSaveMap.Count; i++) |
||||
|
{ |
||||
|
for (int j = 0; j < LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList.Count; j++) |
||||
|
{ |
||||
|
LevelDevelopData_SO.levelData currentLevelData = LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList[j]; |
||||
|
|
||||
|
if (i == generatorLine - 1) |
||||
|
{ |
||||
|
LevelNode currentNode = GenerateLevelBossNode(i, j, currentLevelData.nodePos); |
||||
|
currentNode.SetUpRoomWithRoomData(currentLevelData); |
||||
|
|
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
LevelNode currentNode = GenerateLevelNode(i, j, currentLevelData.nodePos); |
||||
|
currentNode.SetUpRoomWithRoomData(currentLevelData); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
for (int i = 0; i < LevelDevelopManager.Instance.levelDevelopData.levelSaveMap.Count; i++) |
||||
|
{ |
||||
|
for (int j = 0; j < LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList.Count; j++) |
||||
|
{ |
||||
|
LevelDevelopData_SO.levelData currentLevelData = LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList[j]; |
||||
|
LevelNode currentLevelNode = LevelDevelopManager.Instance.levelMap[i].levelColumn[j]; |
||||
|
currentLevelNode.SetUpRoomLinkWithRoomData(currentLevelData); |
||||
|
|
||||
|
if (currentLevelNode.isUse == false) |
||||
|
{ |
||||
|
currentLevelNode.gameObject.SetActive(false); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
currentLevelNode.LineShow(); |
||||
|
} |
||||
|
//设置进度标识
|
||||
|
if (currentLevelNode.isPassBy == true) |
||||
|
{ |
||||
|
currentLevelNode.passByMark.SetActive(true); |
||||
|
} |
||||
|
currentLevelNode.JudgeCanEnter(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
//判断能否进入
|
||||
|
int line = LevelDevelopManager.Instance.levelDevelopData.levelStep; |
||||
|
for (int j = 0; j < LevelDevelopManager.Instance.levelMap[line].levelColumn.Count; j++) |
||||
|
{ |
||||
|
LevelNode currentLevelNode = LevelDevelopManager.Instance.levelMap[line].levelColumn[j]; |
||||
|
currentLevelNode.JudgeRoadCanEnter(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
//设置房间怪物组和地图
|
||||
|
public void SetRoomEnemyPoolAndMap() |
||||
|
{ |
||||
|
ReadEnemyPoolInforCsv(enemyPoolFileName); |
||||
|
//权重概率表
|
||||
|
Dictionary<int, int> weakProbabilityDic = new Dictionary<int, int>(); |
||||
|
int weakTotalWight = 0; |
||||
|
foreach (var pool in probabilityDictionaryWeak.Keys.ToList()) |
||||
|
{ |
||||
|
weakTotalWight += int.Parse(probabilityDictionaryWeak[pool][2]); |
||||
|
weakProbabilityDic.Add(weakTotalWight, pool); |
||||
|
} |
||||
|
List<int> strongProbabilityList = probabilityDictionaryStrong.Keys.ToList(); |
||||
|
List<int> eliteProbabilityList = probabilityDictionaryElite.Keys.ToList(); |
||||
|
List<int> bossProbabilityList = probabilityDictionaryBoss.Keys.ToList(); |
||||
|
//设置怪物池
|
||||
|
for (int i = 0; i < LevelDevelopManager.Instance.levelMap.Count; i++) |
||||
|
{ |
||||
|
for (int j = 0; j < LevelDevelopManager.Instance.levelMap[i].levelColumn.Count; j++) |
||||
|
{ |
||||
|
LevelNode currentLevelNode = LevelDevelopManager.Instance.levelMap[i].levelColumn[j]; |
||||
|
switch (currentLevelNode.roomType) |
||||
|
{ |
||||
|
case RoomType.monster: |
||||
|
if (i < 5) |
||||
|
{ |
||||
|
currentLevelNode.fightEenemyPool = Name.EnemyPool.Weak; |
||||
|
//根据怪物池随机怪物组和地图
|
||||
|
int mark1 = Random.Range(0, weakTotalWight); |
||||
|
List<int> weakProbabilityList = weakProbabilityDic.Keys.ToList(); |
||||
|
for (int a = 0; a < weakProbabilityList.Count; a++) |
||||
|
{ |
||||
|
if (mark1 < weakProbabilityList[a]) |
||||
|
{ |
||||
|
string[] enemys = probabilityDictionaryWeak[weakProbabilityDic[weakProbabilityList[a]]][3].Split(';'); |
||||
|
currentLevelNode.enemyList = enemys.ToList(); |
||||
|
string[] maps = probabilityDictionaryWeak[weakProbabilityDic[weakProbabilityList[a]]][4].Split(';'); |
||||
|
currentLevelNode.mapIndex = maps[Random.Range(0, maps.Count())]; |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
currentLevelNode.fightEenemyPool = Name.EnemyPool.Strong; |
||||
|
//根据怪物池随机怪物组和地图
|
||||
|
int mark2 = Random.Range(0, 100); |
||||
|
for (int a = 0; a < strongProbabilityList.Count; a++) |
||||
|
{ |
||||
|
if (mark2 < strongProbabilityList[a]) |
||||
|
{ |
||||
|
string[] enemys = probabilityDictionaryStrong[strongProbabilityList[a]][3].Split(';'); |
||||
|
currentLevelNode.enemyList = enemys.ToList(); |
||||
|
string[] maps = probabilityDictionaryStrong[strongProbabilityList[a]][4].Split(';'); |
||||
|
currentLevelNode.mapIndex = maps[Random.Range(0, maps.Count())]; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
break; |
||||
|
case RoomType.boss: |
||||
|
currentLevelNode.fightEenemyPool = Name.EnemyPool.Boss; |
||||
|
//根据怪物池随机怪物组和地图
|
||||
|
int mark3 = Random.Range(0, 100); |
||||
|
for (int a = 0; a < bossProbabilityList.Count; a++) |
||||
|
{ |
||||
|
if (mark3 < bossProbabilityList[a]) |
||||
|
{ |
||||
|
string[] enemys = probabilityDictionaryBoss[bossProbabilityList[a]][3].Split(';'); |
||||
|
currentLevelNode.enemyList = enemys.ToList(); |
||||
|
string[] maps = probabilityDictionaryBoss[bossProbabilityList[a]][4].Split(';'); |
||||
|
currentLevelNode.mapIndex = maps[Random.Range(0, maps.Count())]; |
||||
|
} |
||||
|
} |
||||
|
break; |
||||
|
case RoomType.eliteMonster: |
||||
|
currentLevelNode.fightEenemyPool = Name.EnemyPool.Elite; |
||||
|
//根据怪物池随机怪物组和地图
|
||||
|
int mark4 = Random.Range(0, 100); |
||||
|
for (int a = 0; a < eliteProbabilityList.Count; a++) |
||||
|
{ |
||||
|
if (mark4 < eliteProbabilityList[a]) |
||||
|
{ |
||||
|
string[] enemys = probabilityDictionaryElite[eliteProbabilityList[a]][3].Split(';'); |
||||
|
currentLevelNode.enemyList = enemys.ToList(); |
||||
|
string[] maps = probabilityDictionaryElite[eliteProbabilityList[a]][4].Split(';'); |
||||
|
currentLevelNode.mapIndex = maps[Random.Range(0, maps.Count())]; |
||||
|
} |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
public void ReadEnemyPoolInforCsv(string fileName) |
||||
|
{ |
||||
|
string filePath = Path.Combine(Application.streamingAssetsPath, fileName); |
||||
|
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) |
||||
|
using (StreamReader reader = new StreamReader(fs)) |
||||
|
{ |
||||
|
bool isFirstLine = true; |
||||
|
while (!reader.EndOfStream) |
||||
|
{ |
||||
|
string line = reader.ReadLine(); |
||||
|
if (isFirstLine) |
||||
|
{ |
||||
|
isFirstLine = false; |
||||
|
continue; // 跳过标题行
|
||||
|
} |
||||
|
// 用逗号分隔每行数据
|
||||
|
string[] values = line.Split(','); |
||||
|
switch (values[1]) |
||||
|
{ |
||||
|
case Name.EnemyPool.Weak: |
||||
|
probabilityDictionaryWeak.Add(int.Parse(values[0]), values.ToList()); |
||||
|
break; |
||||
|
case Name.EnemyPool.Strong: |
||||
|
probabilityDictionaryStrong.Add(int.Parse(values[0]), values.ToList()); |
||||
|
break; |
||||
|
case Name.EnemyPool.Elite: |
||||
|
probabilityDictionaryElite.Add(int.Parse(values[0]), values.ToList()); |
||||
|
break; |
||||
|
case Name.EnemyPool.Boss: |
||||
|
probabilityDictionaryBoss.Add(int.Parse(values[0]), values.ToList()); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
fileFormatVersion: 2 |
||||
|
guid: 9357c62ffeceff4468da4ccfd5b937a3 |
||||
|
MonoImporter: |
||||
|
externalObjects: {} |
||||
|
serializedVersion: 2 |
||||
|
defaultReferences: [] |
||||
|
executionOrder: 0 |
||||
|
icon: {instanceID: 0} |
||||
|
userData: |
||||
|
assetBundleName: |
||||
|
assetBundleVariant: |
||||
|
@ -0,0 +1,7 @@ |
|||||
|
fileFormatVersion: 2 |
||||
|
guid: 31773780d374d484fb94e91b58d0b06c |
||||
|
DefaultImporter: |
||||
|
externalObjects: {} |
||||
|
userData: |
||||
|
assetBundleName: |
||||
|
assetBundleVariant: |
||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
@ -0,0 +1,7 @@ |
|||||
|
fileFormatVersion: 2 |
||||
|
guid: 062c61522f413ce46946030ab2715b92 |
||||
|
DefaultImporter: |
||||
|
externalObjects: {} |
||||
|
userData: |
||||
|
assetBundleName: |
||||
|
assetBundleVariant: |
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue