Compare commits

...

2 Commits

Author SHA1 Message Date
07626aa550 Added new levels 2025-08-27 17:41:31 +05:00
7c7e61781c Added new levels 2025-08-27 15:14:17 +05:00
22 changed files with 908 additions and 464 deletions

View File

@ -179179,11 +179179,38 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4263584572005659888, guid: 76d8d30b544ba984ea83078979aad6ba,
type: 3}
propertyPath: timeBetweenWaves
value: 5
objectReference: {fileID: 0}
- target: {fileID: 5512387116104888500, guid: 76d8d30b544ba984ea83078979aad6ba,
type: 3}
propertyPath: checkInterval
value: 0.25
objectReference: {fileID: 0}
- target: {fileID: 5638609916812975040, guid: 76d8d30b544ba984ea83078979aad6ba,
type: 3}
propertyPath: targetLevel
value:
objectReference: {fileID: 1147018635}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 76d8d30b544ba984ea83078979aad6ba, type: 3}
--- !u!114 &1147018635 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5512387116104888500, guid: 76d8d30b544ba984ea83078979aad6ba,
type: 3}
m_PrefabInstance: {fileID: 1147018634}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 42850bd66917c2648a04c287cd0fa78f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1147626299
PrefabInstance:
m_ObjectHideFlags: 0
@ -187857,6 +187884,140 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 1206398364}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1206645251
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 1236565187}
m_Modifications:
- target: {fileID: 2570763385268279862, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_Name
value: Level 2
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalPosition.x
value: 44.6
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalPosition.y
value: -18.69
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalPosition.z
value: 81.3
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4437790714047512686, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: waves.Array.size
value: 3
objectReference: {fileID: 0}
- target: {fileID: 4437790714047512686, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: waves.Array.data[2].count
value: 3
objectReference: {fileID: 0}
- target: {fileID: 4437790714047512686, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: waves.Array.data[2].spawnRate
value: 2
objectReference: {fileID: 0}
- target: {fileID: 4437790714047512686, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: waves.Array.data[2].enemyPrefab
value:
objectReference: {fileID: 4006626876238256025, guid: a205c5f30032031428dae83c4a2f2af8,
type: 3}
- target: {fileID: 5259401069666905950, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: targetLevel
value:
objectReference: {fileID: 1206645253}
- target: {fileID: 5259401069666905950, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: levelIndexToStart
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8380645208396581343, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
propertyPath: spawner
value:
objectReference: {fileID: 1206645255}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 7ff947d621876834dacc2c5de97d2706, type: 3}
--- !u!4 &1206645252 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3337232374330422573, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
m_PrefabInstance: {fileID: 1206645251}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1206645253 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 8380645208396581343, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
m_PrefabInstance: {fileID: 1206645251}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7b3075cc0e92b0f46ac59e94d973e996, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &1206645255 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4437790714047512686, guid: 7ff947d621876834dacc2c5de97d2706,
type: 3}
m_PrefabInstance: {fileID: 1206645251}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9274e1d861dffcc4f828e772e0d685d2, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1207237923
PrefabInstance:
m_ObjectHideFlags: 0
@ -190940,6 +191101,8 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 865384241}
- {fileID: 1206645252}
- {fileID: 1425440676}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1236728493
@ -226284,6 +226447,119 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 1424366462}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1425440675
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 1236565187}
m_Modifications:
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalPosition.x
value: 94.87
objectReference: {fileID: 0}
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalPosition.y
value: -19.85
objectReference: {fileID: 0}
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalPosition.z
value: 164.28
objectReference: {fileID: 0}
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2985812689822271779, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: m_Name
value: Level 3
objectReference: {fileID: 0}
- target: {fileID: 3589309351123794781, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: spawner
value:
objectReference: {fileID: 1425440679}
- target: {fileID: 4773734342117882955, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: targetLevel
value:
objectReference: {fileID: 1425440677}
- target: {fileID: 4773734342117882955, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
propertyPath: levelIndexToStart
value: 2
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e30d7852dbe0cea49856effa5b786166, type: 3}
--- !u!4 &1425440676 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2635353821268616760, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
m_PrefabInstance: {fileID: 1425440675}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1425440677 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 3589309351123794781, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
m_PrefabInstance: {fileID: 1425440675}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d3d3d65dc057e5d469b7ecb693589516, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &1425440679 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 3986987885258511227, guid: e30d7852dbe0cea49856effa5b786166,
type: 3}
m_PrefabInstance: {fileID: 1425440675}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9274e1d861dffcc4f828e772e0d685d2, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1426598727
PrefabInstance:
m_ObjectHideFlags: 0
@ -294123,7 +294399,10 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
levels:
- {fileID: 1839882460}
- {fileID: 1147018635}
- {fileID: 1206645253}
- {fileID: 1425440677}
levelStartTriggers: []
--- !u!4 &1755519505
Transform:
m_ObjectHideFlags: 0
@ -307401,18 +307680,6 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 1839099834}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1839882460 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 2166221281141641891, guid: 76d8d30b544ba984ea83078979aad6ba,
type: 3}
m_PrefabInstance: {fileID: 1147018634}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 42850bd66917c2648a04c287cd0fa78f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1840767891
PrefabInstance:
m_ObjectHideFlags: 0

View File

@ -61,10 +61,47 @@ PrefabInstance:
- target: {fileID: 1811311148046463957, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_Name
value: Level
value: Level 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 7609742685143423047, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
insertIndex: -1
addedObject: {fileID: 5512387116104888500}
m_SourcePrefab: {fileID: 100100000, guid: e15c7f46c3c13db448ed53dc091f75e6, type: 3}
--- !u!114 &4263584572005659888 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 511173321709644173, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
m_PrefabInstance: {fileID: 4337888904286002557}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6172317836729025850}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9274e1d861dffcc4f828e772e0d685d2, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &6172317836729025850 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7609742685143423047, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
m_PrefabInstance: {fileID: 4337888904286002557}
m_PrefabAsset: {fileID: 0}
--- !u!114 &5512387116104888500
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6172317836729025850}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 42850bd66917c2648a04c287cd0fa78f, type: 3}
m_Name:
m_EditorClassIdentifier:
config: {fileID: 11400000, guid: 14bb562fb40342c469c55b17d34b3363, type: 2}
spawner: {fileID: 4263584572005659888}
checkInterval: 3

View File

@ -0,0 +1,95 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &4219378387795093987
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1811311148046463957, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_Name
value: Level 2
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 7609742685143423047, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
insertIndex: -1
addedObject: {fileID: 8380645208396581343}
m_SourcePrefab: {fileID: 100100000, guid: e15c7f46c3c13db448ed53dc091f75e6, type: 3}
--- !u!1 &5986694503927738788 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7609742685143423047, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
m_PrefabInstance: {fileID: 4219378387795093987}
m_PrefabAsset: {fileID: 0}
--- !u!114 &8380645208396581343
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5986694503927738788}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7b3075cc0e92b0f46ac59e94d973e996, type: 3}
m_Name:
m_EditorClassIdentifier:
config: {fileID: 11400000, guid: ea09559078458d7499b761746cb99810, type: 2}
spawner: {fileID: 0}
checkInterval: 0.25

View File

@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 99c9720ab356a0642a771bea13969a05
DefaultImporter:
guid: 7ff947d621876834dacc2c5de97d2706
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@ -0,0 +1,95 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &3480347059821116150
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1503645237167873230, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1811311148046463957, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
propertyPath: m_Name
value: Level 3
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 7609742685143423047, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
insertIndex: -1
addedObject: {fileID: 3589309351123794781}
m_SourcePrefab: {fileID: 100100000, guid: e15c7f46c3c13db448ed53dc091f75e6, type: 3}
--- !u!1 &6473803043466879665 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7609742685143423047, guid: e15c7f46c3c13db448ed53dc091f75e6,
type: 3}
m_PrefabInstance: {fileID: 3480347059821116150}
m_PrefabAsset: {fileID: 0}
--- !u!114 &3589309351123794781
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6473803043466879665}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d3d3d65dc057e5d469b7ecb693589516, type: 3}
m_Name:
m_EditorClassIdentifier:
config: {fileID: 11400000, guid: 7cc25368e2334ad4cb6dfeebce7379b2, type: 2}
spawner: {fileID: 0}
checkInterval: 0.25

View File

@ -1,7 +1,6 @@
fileFormatVersion: 2
guid: 915a68a72217d2144853c282a8c67089
folderAsset: yes
DefaultImporter:
guid: e30d7852dbe0cea49856effa5b786166
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@ -226,7 +226,6 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 5609603268183513283}
- component: {fileID: 2467040478378692574}
- component: {fileID: 511173321709644173}
m_Layer: 0
m_Name: Level Stuff
@ -251,20 +250,6 @@ Transform:
- {fileID: 3454616801278800735}
m_Father: {fileID: 1503645237167873230}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2467040478378692574
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7609742685143423047}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 42850bd66917c2648a04c287cd0fa78f, type: 3}
m_Name:
m_EditorClassIdentifier:
spawner: {fileID: 511173321709644173}
checkInterval: 0.25
--- !u!114 &511173321709644173
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@ -1,407 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.18028305, g: 0.22571313, b: 0.3069213, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &330585543
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 330585546}
- component: {fileID: 330585545}
- component: {fileID: 330585544}
- component: {fileID: 330585547}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &330585544
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
--- !u!20 &330585545
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &330585546
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &330585547
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 1
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
--- !u!1 &410087039
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 410087041}
- component: {fileID: 410087040}
- component: {fileID: 410087042}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &410087040
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410087039}
m_Enabled: 1
serializedVersion: 10
m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 2
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 5000
m_UseColorTemperature: 1
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &410087041
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410087039}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!114 &410087042
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410087039}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 1
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
--- !u!1 &832575517
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 832575519}
- component: {fileID: 832575518}
m_Layer: 0
m_Name: Global Volume
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &832575518
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 832575517}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IsGlobal: 1
priority: 0
blendDistance: 0
weight: 1
sharedProfile: {fileID: 11400000, guid: a6560a915ef98420e9faacc1c7438823, type: 2}
--- !u!4 &832575519
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 832575517}
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: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@ -13,8 +13,8 @@ MonoBehaviour:
m_Name: Level 1
m_EditorClassIdentifier:
objectives:
- Go to the marker in the map
- Kill all the enemies
- 'LEVEL 1: Go to the marked objective'
- 'LEVEL 1: Kill all the enemies'
startObjectiveIndex: 0
autoAdvanceOnComplete: 1
clearWavesObjectiveIndex: -1

View File

@ -0,0 +1,22 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a1b5d958ab856164e99bbef104aebeff, type: 3}
m_Name: Level 2
m_EditorClassIdentifier:
objectives:
- 'LEVEL2: Go to the marked objective'
- 'LEVEL 2: Kill all the enemies'
startObjectiveIndex: 0
autoAdvanceOnComplete: 1
clearWavesObjectiveIndex: -1
waves: []
timeBetweenWaves: 3

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ea09559078458d7499b761746cb99810
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,22 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a1b5d958ab856164e99bbef104aebeff, type: 3}
m_Name: Level 3
m_EditorClassIdentifier:
objectives:
- 'LEVEL 3: Go to the marked objective'
- 'LEVEL 3: Kill all the enemies'
startObjectiveIndex: 0
autoAdvanceOnComplete: 1
clearWavesObjectiveIndex: -1
waves: []
timeBetweenWaves: 3

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7cc25368e2334ad4cb6dfeebce7379b2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -11,7 +11,7 @@ public class GameplayManager : MonoBehaviour
private int currentLevelIndex = -1;
private Level currentLevel;
[SerializeField] private List<GameObject> levelStartTriggers;
private void Awake()
{
if (Instance == null)
@ -29,8 +29,19 @@ public class GameplayManager : MonoBehaviour
{
if (lvl != null) lvl.gameObject.SetActive(false);
}
var upcomingLevel = levels[0];
ObjectiveManager.Instance.SetList(upcomingLevel.config.objectives);
EnableOnlyTrigger(0);
}
private void EnableOnlyTrigger(int index)
{
if (levelStartTriggers == null) return;
for (int i = 0; i < levelStartTriggers.Count; i++)
if (levelStartTriggers[i] != null)
levelStartTriggers[i].SetActive(i == index);
}
public void StartLevel(int index)
{
if (index < 0 || index >= levels.Count)
@ -63,19 +74,38 @@ public class GameplayManager : MonoBehaviour
currentLevel.OnLevelEnd();
currentLevel.gameObject.SetActive(false);
currentLevel = null;
// If you want to auto-progress:
int next = currentLevelIndex + 1;
// var upcomingLevel = levels[currentLevelIndex];
// ObjectiveManager.Instance.SetList(upcomingLevel.config.objectives);
if (next < levels.Count)
{
StartLevel(next);
}
else
{
Debug.Log("GameplayManager: All levels completed!");
var upcomingLevel = levels[next];
ObjectiveManager.Instance.SetList(
upcomingLevel.config.objectives,
upcomingLevel.config.startObjectiveIndex
);
}
EnableOnlyTrigger(next);
// if (next < levels.Count)
// {
// StartLevel(next);
// }
// else
// {
// Debug.Log("GameplayManager: All levels completed!");
// }
}
private void LoadUpNextLevel()
{
int next = currentLevelIndex + 1;
var upcomingLevel = levels[currentLevelIndex];
ObjectiveManager.Instance.SetList(upcomingLevel.config.objectives);
}
// Optional: callable by a trigger to start Level 1 specifically
public void StartLevelOne()
{

View File

@ -19,16 +19,11 @@ public abstract class Level : MonoBehaviour
public virtual void OnLevelStart()
{
if (config != null && ObjectiveManager.Instance != null)
{
ObjectiveManager.Instance.SetList(config.objectives, config.startObjectiveIndex);
ObjectiveManager.Instance.autoAdvanceOnComplete = config.autoAdvanceOnComplete;
}
ObjectiveManager.Instance.Advance();
}
public virtual void OnLevelEnd()
{
}
}

View File

@ -0,0 +1,126 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Level2 : Level
{
[Header("Wave Flow")]
public WaveSpawner spawner; // Assign in Inspector
[Min(0.05f)] public float checkInterval = 0.25f;
private bool _running;
private Coroutine _monitorCo;
// Optional: simple counters for UI hooks
private int _currentWaveIdx = -1;
private int _totalWaves = 0;
private int _currentAlive = 0;
private void OnEnable()
{
if (spawner != null)
{
spawner.OnWaveStarted += HandleWaveStarted;
spawner.OnWaveCompleted += HandleWaveCompleted;
spawner.OnAllWavesCompleted += HandleAllWavesCompleted;
spawner.OnAliveCountChanged += HandleAliveChanged;
}
}
private void OnDisable()
{
if (spawner != null)
{
spawner.OnWaveStarted -= HandleWaveStarted;
spawner.OnWaveCompleted -= HandleWaveCompleted;
spawner.OnAllWavesCompleted -= HandleAllWavesCompleted;
spawner.OnAliveCountChanged -= HandleAliveChanged;
}
}
public override void OnLevelStart()
{
base.OnLevelStart();
if (spawner == null)
{
Debug.LogError("[Level1] No WaveSpawner assigned.");
CompleteLevelImmediate();
return;
}
_totalWaves = spawner.TotalWaves;
_running = true;
// Kick off waves
spawner.StartSpawning();
// As an extra safeguard, monitor completion state
_monitorCo = StartCoroutine(MonitorForCompletion());
Debug.Log("[Level1] Level started, waves spawning…");
}
public override void OnLevelEnd()
{
base.OnLevelEnd();
_running = false;
if (_monitorCo != null)
{
StopCoroutine(_monitorCo);
_monitorCo = null;
}
}
private IEnumerator MonitorForCompletion()
{
var wait = new WaitForSeconds(checkInterval);
while (_running)
{
// Complete when spawner reports all waves completed AND no alive remain
if (spawner.AllWavesCompleted && spawner.CurrentAlive == 0)
{
CompleteLevelImmediate();
yield break;
}
yield return wait;
}
}
private void CompleteLevelImmediate()
{
_running = false;
Debug.Log("[Level1] All waves cleared. Level complete!");
if (GameplayManager.Instance != null)
GameplayManager.Instance.CompleteCurrentLevel();
else
gameObject.SetActive(false);
}
// ===== Event handlers (useful for UI/logs/hook-ins) =====
private void HandleWaveStarted(int waveIdx, WaveSpawner.Wave wave)
{
_currentWaveIdx = waveIdx;
Debug.Log($"[Level1] Wave {waveIdx + 1}/{_totalWaves} started. Count={wave.count}, Rate={wave.spawnRate:F2}/s");
// TODO: Update UI: “Wave X/Y starting”
}
private void HandleWaveCompleted(int waveIdx)
{
Debug.Log($"[Level1] Wave {waveIdx + 1}/{_totalWaves} completed.");
// TODO: UI “Wave complete”
}
private void HandleAllWavesCompleted()
{
Debug.Log("[Level1] All waves spawned. Waiting for last enemies to die…");
// Completion is finalized in MonitorForCompletion once alive == 0
}
private void HandleAliveChanged(int currentAlive)
{
_currentAlive = currentAlive;
// TODO: UI “Enemies Left: currentAlive”
}
}

View File

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

View File

@ -0,0 +1,126 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Level3 : Level
{
[Header("Wave Flow")]
public WaveSpawner spawner; // Assign in Inspector
[Min(0.05f)] public float checkInterval = 0.25f;
private bool _running;
private Coroutine _monitorCo;
// Optional: simple counters for UI hooks
private int _currentWaveIdx = -1;
private int _totalWaves = 0;
private int _currentAlive = 0;
private void OnEnable()
{
if (spawner != null)
{
spawner.OnWaveStarted += HandleWaveStarted;
spawner.OnWaveCompleted += HandleWaveCompleted;
spawner.OnAllWavesCompleted += HandleAllWavesCompleted;
spawner.OnAliveCountChanged += HandleAliveChanged;
}
}
private void OnDisable()
{
if (spawner != null)
{
spawner.OnWaveStarted -= HandleWaveStarted;
spawner.OnWaveCompleted -= HandleWaveCompleted;
spawner.OnAllWavesCompleted -= HandleAllWavesCompleted;
spawner.OnAliveCountChanged -= HandleAliveChanged;
}
}
public override void OnLevelStart()
{
base.OnLevelStart();
if (spawner == null)
{
Debug.LogError("[Level1] No WaveSpawner assigned.");
CompleteLevelImmediate();
return;
}
_totalWaves = spawner.TotalWaves;
_running = true;
// Kick off waves
spawner.StartSpawning();
// As an extra safeguard, monitor completion state
_monitorCo = StartCoroutine(MonitorForCompletion());
Debug.Log("[Level1] Level started, waves spawning…");
}
public override void OnLevelEnd()
{
base.OnLevelEnd();
_running = false;
if (_monitorCo != null)
{
StopCoroutine(_monitorCo);
_monitorCo = null;
}
}
private IEnumerator MonitorForCompletion()
{
var wait = new WaitForSeconds(checkInterval);
while (_running)
{
// Complete when spawner reports all waves completed AND no alive remain
if (spawner.AllWavesCompleted && spawner.CurrentAlive == 0)
{
CompleteLevelImmediate();
yield break;
}
yield return wait;
}
}
private void CompleteLevelImmediate()
{
_running = false;
Debug.Log("[Level1] All waves cleared. Level complete!");
if (GameplayManager.Instance != null)
GameplayManager.Instance.CompleteCurrentLevel();
else
gameObject.SetActive(false);
}
// ===== Event handlers (useful for UI/logs/hook-ins) =====
private void HandleWaveStarted(int waveIdx, WaveSpawner.Wave wave)
{
_currentWaveIdx = waveIdx;
Debug.Log($"[Level1] Wave {waveIdx + 1}/{_totalWaves} started. Count={wave.count}, Rate={wave.spawnRate:F2}/s");
// TODO: Update UI: “Wave X/Y starting”
}
private void HandleWaveCompleted(int waveIdx)
{
Debug.Log($"[Level1] Wave {waveIdx + 1}/{_totalWaves} completed.");
// TODO: UI “Wave complete”
}
private void HandleAllWavesCompleted()
{
Debug.Log("[Level1] All waves spawned. Waiting for last enemies to die…");
// Completion is finalized in MonitorForCompletion once alive == 0
}
private void HandleAliveChanged(int currentAlive)
{
_currentAlive = currentAlive;
// TODO: UI “Enemies Left: currentAlive”
}
}

View File

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

View File

@ -1,3 +1,4 @@
using System;
using UnityEngine;
[RequireComponent(typeof(Collider))]
@ -7,7 +8,7 @@ public class LevelStartTrigger : MonoBehaviour
[SerializeField] private int levelIndexToStart = 0; // Level 1 = 0
[Tooltip("Disable the trigger after first use")]
[SerializeField] private bool oneShot = true;
[SerializeField] private Level targetLevel;
private bool _used;
private void Reset()
@ -16,6 +17,17 @@ public class LevelStartTrigger : MonoBehaviour
if (col) col.isTrigger = true;
}
private void OnEnable()
{
if (targetLevel != null && targetLevel.config != null && ObjectiveManager.Instance != null)
{
ObjectiveManager.Instance.SetList(
targetLevel.config.objectives,
targetLevel.config.startObjectiveIndex
);
}
}
private void OnTriggerEnter(Collider other)
{
if (_used) return;

View File

@ -66,12 +66,14 @@ public class bl_MiniMapItem : MonoBehaviour {
/// </summary>
void Start()
{
// MiniMap = bl_MiniMapUtils.GetMiniMap();
// if (bl_MiniMap.MapUIRoot != null)
// {
// CreateIcon();
// }
// else { Debug.Log("You need a MiniMap in scene for use MiniMap Items."); }
if (cacheItem == null)
{
MiniMap = bl_MiniMapUtils.GetMiniMap();
if (bl_MiniMap.MapUIRoot != null)
{
CreateIcon();
}
}
}
/// <summary>