chenxin
2020-12-02 cc7ed63c3efab2640c9cc56225519ab187fd7cbc
拓展塔等级上限
27 files renamed
3 files copied
77 files deleted
4 files added
36 files modified
1284968 ■■■■■ changed files
Assets/Materials/UI/tileTowerVSMat.mat 2 ●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 0.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 1.prefab 29130 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 1.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 2.prefab 29130 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 2.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 3.prefab 29130 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 3.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 4.prefab 29130 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpGhost.prefab 398 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpTower.prefab 41 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpTower_1.prefab 654 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpTower_1.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpTower_2.prefab 654 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpTower_2.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpTower_3.prefab 654 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpTower_3.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpTower_4.prefab 654 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/GrowUpTower_4.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Projectile.prefab patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/Projectile.prefab.meta 2 ●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/TowerLevel.prefab 280 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Fire/TowerLevel.prefab.meta patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_0.prefab 98 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_0.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_1.prefab 84 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_1.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_2.prefab 84 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_2.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/SkillBombTower.prefab 27 ●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_1.prefab 86976 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_1.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_2.prefab 130029 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_2.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_3.prefab 130029 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_3.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_4.prefab 130029 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_4.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/TowerLevel.prefab patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillBomb/TowerLevel.prefab.meta patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_0.prefab 98 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_0.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_1.prefab 84 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_1.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_2.prefab 84 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_2.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/SkillFireTower_1.prefab 86976 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/SkillFireTower_1.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/SkillFireTower_2.prefab 130029 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/SkillFireTower_2.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/SkillFireTower_3.prefab 130029 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/SkillFireTower_3.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/SkillFireTower_4.prefab 130029 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/SkillFireTower_4.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/TowerLevel.prefab patch | view | raw | blame | history
Assets/Prefabs/Towers/SkillFire/TowerLevel.prefab.meta patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatGhost.prefab 398 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatTower.prefab 40 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatTower_1.prefab 663 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatTower_1.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatTower_2.prefab 663 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatTower_2.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatTower_3.prefab 663 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatTower_3.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatTower_4.prefab 663 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/CopyCatTower_4.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/Projectile.prefab patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/Projectile.prefab.meta 2 ●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/TowerLevel.prefab 272 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/TowerLevel.prefab.meta 2 ●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/WaterProjectile_1.prefab 34056 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/WaterProjectile_1.prefab.meta 10 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/WaterProjectile_2.prefab 34056 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/WaterProjectile_2.prefab.meta 10 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/WaterProjectile_3.prefab 34056 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/WaterProjectile_3.prefab.meta 10 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/WaterProjectile_4.prefab 34056 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/Water/WaterProjectile_4.prefab.meta 10 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTower.prefab 40 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTowerGhost.prefab 398 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTower_1.prefab 752 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTower_1.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTower_2.prefab 752 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTower_2.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTower_3.prefab 782 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTower_3.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTower_4.prefab 752 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/BlinkTower_4.prefab.meta 9 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/Projectile.prefab patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/Projectile.prefab.meta patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/ProjectileSp.prefab patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/ProjectileSp.prefab.meta patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/TowerLevel.prefab 284 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/TowerLevel.prefab.meta patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/WProjectile_1.prefab 14966 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/WProjectile_1.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/WProjectile_2.prefab 14966 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/WProjectile_2.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/WProjectile_3.prefab 14966 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/WProjectile_3.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/WProjectile_4.prefab 14966 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/Towers/WoodTower/WProjectile_4.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/GM.prefab 373 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/GMPanel.prefab 4890 ●●●●● patch | view | raw | blame | history
Assets/Resources/UI/DengChang_201.prefab patch | view | raw | blame | history
Assets/Resources/UI/DengChang_201.prefab.meta patch | view | raw | blame | history
Assets/Resources/UI/DengChang_301.prefab patch | view | raw | blame | history
Assets/Resources/UI/DengChang_301.prefab.meta patch | view | raw | blame | history
Assets/Resources/UI/ToBattle_201.prefab patch | view | raw | blame | history
Assets/Resources/UI/ToBattle_201.prefab.meta patch | view | raw | blame | history
Assets/Resources/UI/ToBattle_301.prefab patch | view | raw | blame | history
Assets/Resources/UI/ToBattle_301.prefab.meta patch | view | raw | blame | history
Assets/Scenes/Levels/Battle/Endless2D.unity 382 ●●●●● patch | view | raw | blame | history
Assets/Scripts/ActionGameFramework/Health/DamageCollider.cs 2 ●●● patch | view | raw | blame | history
Assets/Scripts/ActionGameFramework/Health/Damager.cs 2 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Data/ElfInfoData.cs 54 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Data/ElfInfoData.cs.meta 2 ●●● patch | view | raw | blame | history
Assets/Scripts/Data/ElfUpgradeData.cs 43 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Data/ElfUpgradeData.cs.meta 2 ●●● patch | view | raw | blame | history
Assets/Scripts/Json/JsonDataCenter.cs 2 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Net/NetExtends/Table.cs 110 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs 76 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Agents/Agent.cs 29 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Input/TowerDefenseKeyboardMouseInput.cs 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Level/AgentInsManager.cs 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuff.cs 4 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Opponent/OpponentMgr.cs 11 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/Projectiles/BallisticAttack.cs 66 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/Tower.cs 102 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/TowerLaunchers/BallisticLauncher.cs 15 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/TowerLaunchers/HitscanLauncher.cs 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/TowerLaunchers/Launcher.cs 7 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/TowerLevel.cs 73 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndGameScreen.cs 2 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessBuffPreview.cs 4 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/GM.cs 67 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs 56 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/GameUI.cs 72 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/SceneTowerLvl.cs 150 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/TowerInfoDisplay.cs 8 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/TowerSpawnButton.cs 251 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/TowerUI.cs 7 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/RadiusVisualizerController.cs 2 ●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/elf_info.json 1 ●●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/elf_info.json.meta 4 ●●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/elf_upgrade.json 1 ●●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/elf_upgrade.json.meta 4 ●●●● patch | view | raw | blame | history
Assets/Materials/UI/tileTowerVSMat.mat
@@ -40,7 +40,7 @@
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MainTex:
        m_Texture: {fileID: 2800000, guid: 8c9a3d26120e78f40aa4ef9ed23d573c, type: 3}
        m_Texture: {fileID: 2800000, guid: 93f40a01d57fbff418fc0b54b6ab7d9f, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MetallicGlossMap:
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 0.prefab.meta
File was deleted
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 1.prefab
File was deleted
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 1.prefab.meta
File was deleted
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 2.prefab
File was deleted
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 2.prefab.meta
File was deleted
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 3.prefab
File was deleted
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 3.prefab.meta
File was deleted
Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 4.prefab
File was deleted
Assets/Prefabs/Towers/Fire/GrowUpGhost.prefab
@@ -1,106 +1,5 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1019988406280908
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4685074978469290}
  - component: {fileID: 33272799898454844}
  - component: {fileID: 23482840573321776}
  - component: {fileID: 95204029542362376}
  m_Layer: 0
  m_Name: Base_MachineGun_L01 (1)
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &4685074978469290
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: -0.0000207901, y: 0.399803, z: 0.006250305}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &33272799898454844
MeshFilter:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_Mesh: {fileID: 4300002, guid: dd040609d7aef419b9c85fc5bfa91345, type: 3}
--- !u!23 &23482840573321776
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_Enabled: 1
  m_CastShadows: 2
  m_ReceiveShadows: 1
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2100000, guid: 6fe9580bd67b34580977e0aa4eab9755, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!95 &95204029542362376
Animator:
  serializedVersion: 3
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_Enabled: 1
  m_Avatar: {fileID: 9000000, guid: dd040609d7aef419b9c85fc5bfa91345, type: 3}
  m_Controller: {fileID: 0}
  m_CullingMode: 0
  m_UpdateMode: 0
  m_ApplyRootMotion: 0
  m_LinearVelocityBlending: 0
  m_WarningMessage:
  m_HasTransformHierarchy: 1
  m_AllowConstantClipSamplingOptimization: 1
  m_KeepAnimatorControllerStateOnDisable: 0
--- !u!1 &1765953084670540
GameObject:
  m_ObjectHideFlags: 0
@@ -131,11 +30,7 @@
  m_LocalPosition: {x: 0, y: 1, z: 0}
  m_LocalScale: {x: 6, y: 6, z: 6}
  m_Children:
  - {fileID: 4685074978469290}
  - {fileID: 4311262752186836}
  - {fileID: 3612191030180932262}
  - {fileID: 8881031329162733352}
  - {fileID: 3965791939505964779}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -189,297 +84,6 @@
  m_Interpolate: 0
  m_Constraints: 0
  m_CollisionDetection: 0
--- !u!1 &1819557052583670
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4311262752186836}
  - component: {fileID: 33106802983885084}
  - component: {fileID: 23105248951433798}
  - component: {fileID: 95768454053860524}
  m_Layer: 0
  m_Name: Turret_MachineGun_L01 (1)
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &4311262752186836
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: -0.0012022133, y: 0.7930937, z: 0.0064944928}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &33106802983885084
MeshFilter:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_Mesh: {fileID: 4300002, guid: ca1b398fbc1a64abaaf160449dab6c93, type: 3}
--- !u!23 &23105248951433798
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_Enabled: 1
  m_CastShadows: 2
  m_ReceiveShadows: 1
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2100000, guid: 6fe9580bd67b34580977e0aa4eab9755, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!95 &95768454053860524
Animator:
  serializedVersion: 3
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_Enabled: 1
  m_Avatar: {fileID: 9000000, guid: ca1b398fbc1a64abaaf160449dab6c93, type: 3}
  m_Controller: {fileID: 0}
  m_CullingMode: 0
  m_UpdateMode: 0
  m_ApplyRootMotion: 0
  m_LinearVelocityBlending: 0
  m_WarningMessage:
  m_HasTransformHierarchy: 1
  m_AllowConstantClipSamplingOptimization: 1
  m_KeepAnimatorControllerStateOnDisable: 0
--- !u!1 &604757029891099734
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 3965791939505964779}
  - component: {fileID: 8299575938614333592}
  - component: {fileID: 4071433710146149729}
  m_Layer: 0
  m_Name: Body
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &3965791939505964779
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 604757029891099734}
  m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
  m_LocalPosition: {x: 0, y: 0.5, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!212 &8299575938614333592
SpriteRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 604757029891099734}
  m_Enabled: 1
  m_CastShadows: 0
  m_ReceiveShadows: 0
  m_DynamicOccludee: 1
  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: 0
  m_Sprite: {fileID: 21300000, guid: 01a43ec3fb31bb54bb62dc0ba8137f11, 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.35, y: 1.35}
  m_AdaptiveModeThreshold: 0.5
  m_SpriteTileMode: 0
  m_WasSpriteAssigned: 1
  m_MaskInteraction: 0
  m_SpriteSortPoint: 0
--- !u!114 &4071433710146149729
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 604757029891099734}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 70719dcea2b0be54580a41e62debeab1, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!1 &7024398184089023210
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 3612191030180932262}
  - component: {fileID: 3668669315062734552}
  - component: {fileID: 4652148941928140349}
  - component: {fileID: 8798624205418719708}
  m_Layer: 0
  m_Name: Cube
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &3612191030180932262
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
  m_LocalPosition: {x: 0, y: 0.5, z: 0}
  m_LocalScale: {x: 1.6, y: 1.6, z: 1.6}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!33 &3668669315062734552
MeshFilter:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4652148941928140349
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_Enabled: 1
  m_CastShadows: 1
  m_ReceiveShadows: 1
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2100000, guid: 94110c9a997a3cf4d971aa75155f5351, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!65 &8798624205418719708
BoxCollider:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_Material: {fileID: 0}
  m_IsTrigger: 0
  m_Enabled: 1
  serializedVersion: 2
  m_Size: {x: 1, y: 1, z: 1}
  m_Center: {x: 0, y: 0, z: 0}
--- !u!1001 &8052233296917497647
PrefabInstance:
  m_ObjectHideFlags: 0
@@ -540,7 +144,7 @@
    - target: {fileID: 1477327419404394503, guid: b5c0e6c0d79dced4abe8c84515a17c62,
        type: 3}
      propertyPath: m_RootOrder
      value: 3
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 1477327419404394503, guid: b5c0e6c0d79dced4abe8c84515a17c62,
        type: 3}
Assets/Prefabs/Towers/Fire/GrowUpTower.prefab
@@ -15,7 +15,6 @@
  - component: {fileID: 114697314857621730}
  - component: {fileID: 208111389854632630}
  - component: {fileID: 82508339509680898}
  - component: {fileID: 114936617866548888}
  m_Layer: 10
  m_Name: GrowUpTower
  m_TagString: Untagged
@@ -72,39 +71,23 @@
      unityObjectReference: {fileID: 11400000, guid: 2e20cdb38c63f4edf8ee385c50c089ce,
        type: 2}
  targetTransform: {fileID: 0}
  bElit: 0
  bBoss: 0
  poisonTex: {fileID: 0}
  frozenTex: {fileID: 0}
  commonTex: {fileID: 0}
  PoisonParticle: {fileID: 0}
  PoisonEndParticle: {fileID: 0}
  SlowDownParticle: {fileID: 0}
  FrostParticle: {fileID: 0}
  FireSkillParticle: {fileID: 0}
  towerName: GrowUpTower
  dimensions:
    x: 1
    y: 1
  towerFeature: 0
  materialMonsterSelf: {fileID: 2100000, guid: e4a344b484251ce4e8b5f18e0618e647, type: 2}
  materialMonsterOppo: {fileID: 2100000, guid: 005b2213e521ef04a9f51bde68b9735f, type: 2}
  eTowerFuntion: 2
  bulletCtl: {fileID: 0}
  energyCtl: {fileID: 0}
  FreezeBreathCtrl: {fileID: 0}
  levels:
  - {fileID: 114779466188146336, guid: 0ead2ba21a4e3e84e9bca834100c4456, type: 3}
  - {fileID: 114056922861069036, guid: 538d7be2cf35d90438a4c101023e8839, type: 3}
  - {fileID: 114683032773000130, guid: d2b30bda72c5af749b1cd014f1cd871f, type: 3}
  - {fileID: 114683032773000130, guid: 54bfb565a1d898c4e9107b949981cc9c, type: 3}
  - {fileID: 114683032773000130, guid: 23c8e8148828aba4ca7113aabaf73d20, type: 3}
  towerLevel: {fileID: 114779466188146336, guid: 0ead2ba21a4e3e84e9bca834100c4456,
    type: 3}
  CurrentTowerLevel: {fileID: 0}
  attributeId: 101
  uiImage: {fileID: 21300000, guid: 9e3de4693b87558498eceb6c232005e2, type: 3}
  ElfId: 101
  enemyLayerMask:
    serializedVersion: 2
    m_Bits: 524087
  bDoubleHitElit: 0
  WoodAimAgent: {fileID: 0}
  CanAttack: 1
--- !u!65 &65801875245033440
@@ -247,19 +230,3 @@
    m_PreInfinity: 2
    m_PostInfinity: 2
    m_RotationOrder: 0
--- !u!114 &114936617866548888
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1304972810206532}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: abee75620e9f84f14a9452041dd7a6da, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  damageableBehaviour: {fileID: 114126723238285906}
  deathParticleSystemPrefab: {fileID: 198059975614214484, guid: 7a0476686964e41ac8320b7cf37868c2,
    type: 3}
  deathEffectOffset: {x: 0, y: 0, z: 0}
Assets/Prefabs/Towers/Fire/GrowUpTower_1.prefab
File was deleted
Assets/Prefabs/Towers/Fire/GrowUpTower_1.prefab.meta
File was deleted
Assets/Prefabs/Towers/Fire/GrowUpTower_2.prefab
File was deleted
Assets/Prefabs/Towers/Fire/GrowUpTower_2.prefab.meta
File was deleted
Assets/Prefabs/Towers/Fire/GrowUpTower_3.prefab
File was deleted
Assets/Prefabs/Towers/Fire/GrowUpTower_3.prefab.meta
File was deleted
Assets/Prefabs/Towers/Fire/GrowUpTower_4.prefab
File was deleted
Assets/Prefabs/Towers/Fire/GrowUpTower_4.prefab.meta
File was deleted
Assets/Prefabs/Towers/Fire/Projectile.prefab
Assets/Prefabs/Towers/Fire/Projectile.prefab.meta
File was renamed from Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 4.prefab.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 517d2b5ee0bf1a3489b4273193b8a322
guid: 5d367a6f95f1a9c4799122838f701856
PrefabImporter:
  externalObjects: {}
  userData: 
Assets/Prefabs/Towers/Fire/TowerLevel.prefab
File was renamed from Assets/Prefabs/Towers/Fire/GrowUpTower_0.prefab
@@ -11,7 +11,7 @@
  - component: {fileID: 4795219791600268}
  - component: {fileID: 114779466188146336}
  m_Layer: 10
  m_Name: GrowUpTower_0
  m_Name: TowerLevel
  m_TagString: PlaceTower
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
@@ -30,8 +30,8 @@
  m_Children:
  - {fileID: 4966141693256532}
  - {fileID: 4561687637155890}
  - {fileID: 1862906702586422750}
  - {fileID: 4052684896725478125}
  - {fileID: 1996497244768087890}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
@@ -51,11 +51,11 @@
    type: 3}
  UpgradeEffectPrefab: {fileID: 6847503030253729540, guid: f8ec855cfd7e13a4ebb2f2cbb8bbc480,
    type: 3}
  levelData: {fileID: 11400000, guid: 67687baaef809441e8b698087793fe51, type: 2}
  Body: {fileID: 438341193421044329}
  AttackBody: {fileID: 6259461163498204177}
  canPlaceMesh: {fileID: 8922729978813840706}
  ActionAnimator: {fileID: 5903068064252827974}
  LevelText: {fileID: 3015828924728492603}
--- !u!1 &1430798241748466
GameObject:
  m_ObjectHideFlags: 0
@@ -130,8 +130,6 @@
  m_Script: {fileID: 11500000, guid: 60237945a79b432f872d1c8c9d7c74a7, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  fireParticleObj: {fileID: 1232470965182556, guid: 4eeb51a79b674084887bce37aa7713b3,
    type: 3}
--- !u!114 &114091089106639196
MonoBehaviour:
  m_ObjectHideFlags: 0
@@ -145,15 +143,13 @@
  m_Name: 
  m_EditorClassIdentifier: 
  description: Offensive
  projectile: {fileID: 2369440489128176080, guid: c4d109853a118a8449507051485a3969,
  projectile: {fileID: 2369440489128176080, guid: 5d367a6f95f1a9c4799122838f701856,
    type: 3}
  woodProjectile_SP: {fileID: 0}
  projectilePoints:
  - {fileID: 4457715277627928}
  epicenter: {fileID: 4795219791600268}
  isMultiAttack: 0
  maxAttackNum: 1
  projectileFireRate: 1
  bWoodAffector: 0
  randomAudioSource: {fileID: 0}
  towerTargetter: {fileID: 114079108543431824}
@@ -459,7 +455,7 @@
  - {fileID: 3204183841027973478}
  - {fileID: 511615870644716679}
  m_Father: {fileID: 4795219791600268}
  m_RootOrder: 3
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &5775925443952407253
MonoBehaviour:
@@ -474,6 +470,177 @@
  m_Name: 
  m_EditorClassIdentifier: 
  offect: {x: 0, y: 0.07, z: 0.04}
--- !u!1 &9007331548877874687
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1996497244768087890}
  - component: {fileID: 8308741391267111117}
  - component: {fileID: 3015828924728492603}
  m_Layer: 0
  m_Name: Text (TMP)
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1996497244768087890
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9007331548877874687}
  m_LocalRotation: {x: 0, y: 0.7071068, z: -0.7071068, w: 0}
  m_LocalPosition: {x: 0, y: 0, z: 0.673}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4795219791600268}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 90, y: 180, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0.198}
  m_SizeDelta: {x: 2, y: 0.5}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!23 &8308741391267111117
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9007331548877874687}
  m_Enabled: 1
  m_CastShadows: 0
  m_ReceiveShadows: 0
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &3015828924728492603
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9007331548877874687}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_text: '1
'
  m_isRightToLeft: 0
  m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
  m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
  m_fontSharedMaterials: []
  m_fontMaterial: {fileID: 0}
  m_fontMaterials: []
  m_fontColor32:
    serializedVersion: 2
    rgba: 4294967295
  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
  m_enableVertexGradient: 0
  m_colorMode: 3
  m_fontColorGradient:
    topLeft: {r: 1, g: 1, b: 1, a: 1}
    topRight: {r: 1, g: 1, b: 1, a: 1}
    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
    bottomRight: {r: 1, g: 1, b: 1, a: 1}
  m_fontColorGradientPreset: {fileID: 0}
  m_spriteAsset: {fileID: 0}
  m_tintAllSprites: 0
  m_StyleSheet: {fileID: 0}
  m_TextStyleHashCode: -1183493901
  m_overrideHtmlColors: 0
  m_faceColor:
    serializedVersion: 2
    rgba: 4294967295
  m_fontSize: 4
  m_fontSizeBase: 4
  m_fontWeight: 400
  m_enableAutoSizing: 0
  m_fontSizeMin: 18
  m_fontSizeMax: 72
  m_fontStyle: 0
  m_HorizontalAlignment: 2
  m_VerticalAlignment: 256
  m_textAlignment: 65535
  m_characterSpacing: 0
  m_wordSpacing: 0
  m_lineSpacing: 0
  m_lineSpacingMax: 0
  m_paragraphSpacing: 0
  m_charWidthMaxAdj: 0
  m_enableWordWrapping: 1
  m_wordWrappingRatios: 0.4
  m_overflowMode: 0
  m_linkedTextComponent: {fileID: 0}
  parentLinkedComponent: {fileID: 0}
  m_enableKerning: 1
  m_enableExtraPadding: 0
  checkPaddingRequired: 0
  m_isRichText: 1
  m_parseCtrlCharacters: 1
  m_isOrthographic: 0
  m_isCullingEnabled: 0
  m_horizontalMapping: 0
  m_verticalMapping: 0
  m_uvLineOffset: 0
  m_geometrySortingOrder: 0
  m_IsTextObjectScaleStatic: 0
  m_VertexBufferAutoSizeReduction: 1
  m_useMaxVisibleDescender: 1
  m_pageToDisplay: 1
  m_margin: {x: 0, y: 0, z: 0, w: 0}
  m_isUsingLegacyAnimationComponent: 0
  m_isVolumetricText: 0
  m_hasFontAssetChanged: 0
  m_renderer: {fileID: 8308741391267111117}
  m_maskType: 0
  _SortingLayerID: 0
  _SortingOrder: 0
--- !u!1001 &419801383327468194
PrefabInstance:
  m_ObjectHideFlags: 0
@@ -554,99 +721,4 @@
  m_CorrespondingSourceObject: {fileID: 9079406959305619424, guid: 2ff5adb841c4a2c47bdf1b1bf72e6b17,
    type: 3}
  m_PrefabInstance: {fileID: 419801383327468194}
  m_PrefabAsset: {fileID: 0}
--- !u!1001 &4370772437094782118
PrefabInstance:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Modification:
    m_TransformParent: {fileID: 4795219791600268}
    m_Modifications:
    - target: {fileID: 2323272225601783335, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_Materials.Array.data[0]
      value:
      objectReference: {fileID: 2100000, guid: 6a37d3cb5f6f9954882bb5782cfec86c, type: 2}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalPosition.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalPosition.y
      value: 0.2
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalPosition.z
      value: 0.6
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.y
      value: 0.7071068
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.z
      value: -0.7071068
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.w
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_RootOrder
      value: 2
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.x
      value: 90
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.y
      value: 180
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalScale.x
      value: 0.864
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalScale.y
      value: 0.6
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalScale.z
      value: 0.6
      objectReference: {fileID: 0}
    - target: {fileID: 6866078322230836259, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_Name
      value: Star
      objectReference: {fileID: 0}
    m_RemovedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: 6c579c0e357fbc04890529f3fea5863a, type: 3}
--- !u!4 &1862906702586422750 stripped
Transform:
  m_CorrespondingSourceObject: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
    type: 3}
  m_PrefabInstance: {fileID: 4370772437094782118}
  m_PrefabAsset: {fileID: 0}
Assets/Prefabs/Towers/Fire/TowerLevel.prefab.meta
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_0.prefab
File was deleted
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_0.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_1.prefab
File was deleted
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_1.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_2.prefab
File was deleted
Assets/Prefabs/Towers/SkillBomb/GrowUpProjectile_2.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillBomb/SkillBombTower.prefab
@@ -105,43 +105,22 @@
      unityObjectReference: {fileID: 11400000, guid: 2e20cdb38c63f4edf8ee385c50c089ce,
        type: 2}
  targetTransform: {fileID: 0}
  bElit: 0
  bBoss: 0
  poisonTex: {fileID: 0}
  frozenTex: {fileID: 0}
  commonTex: {fileID: 0}
  PoisonParticle: {fileID: 0}
  PoisonEndParticle: {fileID: 0}
  SlowDownParticle: {fileID: 0}
  FrostParticle: {fileID: 0}
  FireSkillParticle: {fileID: 0}
  towerName: SkillBombTower
  dimensions:
    x: 1
    y: 1
  towerFeature: 5
  materialMonsterSelf: {fileID: 0}
  materialMonsterOppo: {fileID: 0}
  materialTowerAttackSelf: {fileID: 0}
  materialTowerWaitSelf: {fileID: 0}
  materialTowerAttackOppo: {fileID: 0}
  materialTowerWaitOppo: {fileID: 0}
  eTowerFuntion: 0
  bulletCtl: {fileID: 0}
  energyCtl: {fileID: 0}
  FreezeBreathCtrl: {fileID: 0}
  levels:
  - {fileID: 114779466188146336, guid: 21f4547dd92b34e41ba4819368d06d36, type: 3}
  - {fileID: 114056922861069036, guid: 34b3d80fef4d34e4591c53df8cdc2b17, type: 3}
  - {fileID: 114683032773000130, guid: 1a4f4cc913deb974688d2f2a58f99614, type: 3}
  - {fileID: 114683032773000130, guid: b85c63e1cf9b8b54ca3b56eca6744e56, type: 3}
  - {fileID: 114683032773000130, guid: 046b4edcbe8a5a04788ccbadeaf7ba05, type: 3}
  towerLevel: {fileID: 114779466188146336, guid: 21f4547dd92b34e41ba4819368d06d36,
    type: 3}
  attributeId: 99901
  uiImage: {fileID: 21300000, guid: 9e3de4693b87558498eceb6c232005e2, type: 3}
  ElfId: 0
  enemyLayerMask:
    serializedVersion: 2
    m_Bits: 524087
  bDoubleHitElit: 0
  WoodAimAgent: {fileID: 0}
  CanAttack: 1
--- !u!65 &65801875245033440
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_1.prefab
File was deleted
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_1.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_2.prefab
File was deleted
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_2.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_3.prefab
File was deleted
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_3.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_4.prefab
File was deleted
Assets/Prefabs/Towers/SkillBomb/SkillBombTower_4.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillBomb/TowerLevel.prefab
Assets/Prefabs/Towers/SkillBomb/TowerLevel.prefab.meta
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_0.prefab
File was deleted
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_0.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_1.prefab
File was deleted
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_1.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_2.prefab
File was deleted
Assets/Prefabs/Towers/SkillFire/GrowUpProjectile_2.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillFire/SkillFireTower_1.prefab
File was deleted
Assets/Prefabs/Towers/SkillFire/SkillFireTower_1.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillFire/SkillFireTower_2.prefab
File was deleted
Assets/Prefabs/Towers/SkillFire/SkillFireTower_2.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillFire/SkillFireTower_3.prefab
File was deleted
Assets/Prefabs/Towers/SkillFire/SkillFireTower_3.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillFire/SkillFireTower_4.prefab
File was deleted
Assets/Prefabs/Towers/SkillFire/SkillFireTower_4.prefab.meta
File was deleted
Assets/Prefabs/Towers/SkillFire/TowerLevel.prefab
Assets/Prefabs/Towers/SkillFire/TowerLevel.prefab.meta
Assets/Prefabs/Towers/Water/CopyCatGhost.prefab
@@ -1,106 +1,5 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1019988406280908
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4685074978469290}
  - component: {fileID: 33272799898454844}
  - component: {fileID: 23482840573321776}
  - component: {fileID: 95204029542362376}
  m_Layer: 0
  m_Name: Base_MachineGun_L01 (1)
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &4685074978469290
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: -0.0000207901, y: 0.399803, z: 0.006250305}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &33272799898454844
MeshFilter:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_Mesh: {fileID: 4300002, guid: dd040609d7aef419b9c85fc5bfa91345, type: 3}
--- !u!23 &23482840573321776
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_Enabled: 1
  m_CastShadows: 2
  m_ReceiveShadows: 1
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2100000, guid: 6fe9580bd67b34580977e0aa4eab9755, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!95 &95204029542362376
Animator:
  serializedVersion: 3
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_Enabled: 1
  m_Avatar: {fileID: 9000000, guid: dd040609d7aef419b9c85fc5bfa91345, type: 3}
  m_Controller: {fileID: 0}
  m_CullingMode: 0
  m_UpdateMode: 0
  m_ApplyRootMotion: 0
  m_LinearVelocityBlending: 0
  m_WarningMessage:
  m_HasTransformHierarchy: 1
  m_AllowConstantClipSamplingOptimization: 1
  m_KeepAnimatorControllerStateOnDisable: 0
--- !u!1 &1765953084670540
GameObject:
  m_ObjectHideFlags: 0
@@ -131,11 +30,7 @@
  m_LocalPosition: {x: 0, y: 1, z: 0}
  m_LocalScale: {x: 6, y: 6, z: 6}
  m_Children:
  - {fileID: 4685074978469290}
  - {fileID: 4311262752186836}
  - {fileID: 3612191030180932262}
  - {fileID: 1151488649969889108}
  - {fileID: 4572042178740371614}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -189,297 +84,6 @@
  m_Interpolate: 0
  m_Constraints: 0
  m_CollisionDetection: 0
--- !u!1 &1819557052583670
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4311262752186836}
  - component: {fileID: 33106802983885084}
  - component: {fileID: 23105248951433798}
  - component: {fileID: 95768454053860524}
  m_Layer: 0
  m_Name: Turret_MachineGun_L01 (1)
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &4311262752186836
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: -0.0012022133, y: 0.7930937, z: 0.0064944928}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &33106802983885084
MeshFilter:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_Mesh: {fileID: 4300002, guid: ca1b398fbc1a64abaaf160449dab6c93, type: 3}
--- !u!23 &23105248951433798
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_Enabled: 1
  m_CastShadows: 2
  m_ReceiveShadows: 1
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2100000, guid: 6fe9580bd67b34580977e0aa4eab9755, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!95 &95768454053860524
Animator:
  serializedVersion: 3
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_Enabled: 1
  m_Avatar: {fileID: 9000000, guid: ca1b398fbc1a64abaaf160449dab6c93, type: 3}
  m_Controller: {fileID: 0}
  m_CullingMode: 0
  m_UpdateMode: 0
  m_ApplyRootMotion: 0
  m_LinearVelocityBlending: 0
  m_WarningMessage:
  m_HasTransformHierarchy: 1
  m_AllowConstantClipSamplingOptimization: 1
  m_KeepAnimatorControllerStateOnDisable: 0
--- !u!1 &6385276672430766893
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4572042178740371614}
  - component: {fileID: 8735797494109920784}
  - component: {fileID: 3715539526976483504}
  m_Layer: 0
  m_Name: Body
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &4572042178740371614
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6385276672430766893}
  m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
  m_LocalPosition: {x: 0, y: 0.5, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!212 &8735797494109920784
SpriteRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6385276672430766893}
  m_Enabled: 1
  m_CastShadows: 0
  m_ReceiveShadows: 0
  m_DynamicOccludee: 1
  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: 0
  m_Sprite: {fileID: 21300000, guid: e1de2e46a70adb34b9fc81ae00f5557e, 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.35, y: 1.35}
  m_AdaptiveModeThreshold: 0.5
  m_SpriteTileMode: 0
  m_WasSpriteAssigned: 1
  m_MaskInteraction: 0
  m_SpriteSortPoint: 0
--- !u!114 &3715539526976483504
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6385276672430766893}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 70719dcea2b0be54580a41e62debeab1, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!1 &7024398184089023210
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 3612191030180932262}
  - component: {fileID: 3668669315062734552}
  - component: {fileID: 4652148941928140349}
  - component: {fileID: 8798624205418719708}
  m_Layer: 0
  m_Name: Cube
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &3612191030180932262
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
  m_LocalPosition: {x: 0, y: 0.5, z: 0}
  m_LocalScale: {x: 1.6, y: 1.6, z: 1.6}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!33 &3668669315062734552
MeshFilter:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4652148941928140349
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_Enabled: 1
  m_CastShadows: 1
  m_ReceiveShadows: 1
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2100000, guid: 2d85f86666c66414d9ea16c907ee24c4, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!65 &8798624205418719708
BoxCollider:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_Material: {fileID: 0}
  m_IsTrigger: 0
  m_Enabled: 1
  serializedVersion: 2
  m_Size: {x: 1, y: 1, z: 1}
  m_Center: {x: 0, y: 0, z: 0}
--- !u!1001 &4142105000085530966
PrefabInstance:
  m_ObjectHideFlags: 0
@@ -525,7 +129,7 @@
    - target: {fileID: 3927524111222228482, guid: e47fa4744f930db42bfb7c004122acd2,
        type: 3}
      propertyPath: m_RootOrder
      value: 3
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3927524111222228482, guid: e47fa4744f930db42bfb7c004122acd2,
        type: 3}
Assets/Prefabs/Towers/Water/CopyCatTower.prefab
@@ -15,7 +15,6 @@
  - component: {fileID: 114697314857621730}
  - component: {fileID: 208111389854632630}
  - component: {fileID: 82508339509680898}
  - component: {fileID: 114936617866548888}
  m_Layer: 10
  m_Name: CopyCatTower
  m_TagString: Untagged
@@ -72,39 +71,22 @@
      unityObjectReference: {fileID: 11400000, guid: 2e20cdb38c63f4edf8ee385c50c089ce,
        type: 2}
  targetTransform: {fileID: 0}
  bElit: 0
  bBoss: 0
  poisonTex: {fileID: 0}
  frozenTex: {fileID: 0}
  commonTex: {fileID: 0}
  PoisonParticle: {fileID: 0}
  PoisonEndParticle: {fileID: 0}
  SlowDownParticle: {fileID: 0}
  FrostParticle: {fileID: 0}
  FireSkillParticle: {fileID: 0}
  towerName: CopyCatTower
  dimensions:
    x: 1
    y: 1
  towerFeature: 0
  materialMonsterSelf: {fileID: 2100000, guid: ddb85d8b180c34b4eb5319442df49fd1, type: 2}
  materialMonsterOppo: {fileID: 2100000, guid: 02fc3bcbfec233244b426d2427eebf55, type: 2}
  eTowerFuntion: 3
  bulletCtl: {fileID: 0}
  energyCtl: {fileID: 0}
  FreezeBreathCtrl: {fileID: 0}
  levels:
  - {fileID: 114779466188146336, guid: 46284df075bf4504090e7d47372d118e, type: 3}
  - {fileID: 114056922861069036, guid: e41b539c7443b1c46b3c6a80c7cca78d, type: 3}
  - {fileID: 114683032773000130, guid: f219161155597774c9da965d8dc2297c, type: 3}
  - {fileID: 114683032773000130, guid: 7ba4cfbff2a050b4a8c8b6e50c33c912, type: 3}
  - {fileID: 114683032773000130, guid: fd66821cc43134c47ac5db5066cddbc7, type: 3}
  towerLevel: {fileID: 114779466188146336, guid: 7ba4de369892f6641bde552434b612b5,
    type: 3}
  attributeId: 105
  uiImage: {fileID: 21300000, guid: a4930810a16645146b591af4fd8cc80b, type: 3}
  ElfId: 201
  enemyLayerMask:
    serializedVersion: 2
    m_Bits: 524087
  bDoubleHitElit: 0
  WoodAimAgent: {fileID: 0}
  CanAttack: 1
--- !u!65 &65801875245033440
@@ -247,19 +229,3 @@
    m_PreInfinity: 2
    m_PostInfinity: 2
    m_RotationOrder: 0
--- !u!114 &114936617866548888
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1304972810206532}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: abee75620e9f84f14a9452041dd7a6da, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  damageableBehaviour: {fileID: 114126723238285906}
  deathParticleSystemPrefab: {fileID: 198059975614214484, guid: 7a0476686964e41ac8320b7cf37868c2,
    type: 3}
  deathEffectOffset: {x: 0, y: 0, z: 0}
Assets/Prefabs/Towers/Water/CopyCatTower_1.prefab
File was deleted
Assets/Prefabs/Towers/Water/CopyCatTower_1.prefab.meta
File was deleted
Assets/Prefabs/Towers/Water/CopyCatTower_2.prefab
File was deleted
Assets/Prefabs/Towers/Water/CopyCatTower_2.prefab.meta
File was deleted
Assets/Prefabs/Towers/Water/CopyCatTower_3.prefab
File was deleted
Assets/Prefabs/Towers/Water/CopyCatTower_3.prefab.meta
File was deleted
Assets/Prefabs/Towers/Water/CopyCatTower_4.prefab
File was deleted
Assets/Prefabs/Towers/Water/CopyCatTower_4.prefab.meta
File was deleted
Assets/Prefabs/Towers/Water/Projectile.prefab
Assets/Prefabs/Towers/Water/Projectile.prefab.meta
File was renamed from Assets/Prefabs/Towers/Water/WaterProjectile_0.prefab.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ea6e7c64a17622d4c929f3dc46d96390
guid: 1c2c55b6a30d0d3488f8260e6f89198c
timeCreated: 1529401657
licenseType: Store
NativeFormatImporter:
Assets/Prefabs/Towers/Water/TowerLevel.prefab
File was renamed from Assets/Prefabs/Towers/Water/CopyCatTower_0.prefab
@@ -11,7 +11,7 @@
  - component: {fileID: 4795219791600268}
  - component: {fileID: 114779466188146336}
  m_Layer: 10
  m_Name: CopyCatTower_0
  m_Name: TowerLevel
  m_TagString: PlaceTower
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
@@ -30,8 +30,8 @@
  m_Children:
  - {fileID: 4966141693256532}
  - {fileID: 4561687637155890}
  - {fileID: 1862906702586422750}
  - {fileID: 4633562747676014397}
  - {fileID: 8092596523508851291}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
@@ -51,13 +51,11 @@
    type: 3}
  UpgradeEffectPrefab: {fileID: 6847503030253729540, guid: f8ec855cfd7e13a4ebb2f2cbb8bbc480,
    type: 3}
  levelDamager: {fileID: 114588164740221456, guid: 2911a186c1af1ac4994b2bb264db9822,
    type: 3}
  levelData: {fileID: 11400000, guid: 67687baaef809441e8b698087793fe51, type: 2}
  Body: {fileID: 4886038783420556509}
  AttackBody: {fileID: 6384721383495438974}
  canPlaceMesh: {fileID: 8544713194142290847}
  ActionAnimator: {fileID: 5941665718710893401}
  LevelText: {fileID: 6407887908952639974}
--- !u!1 &1430798241748466
GameObject:
  m_ObjectHideFlags: 0
@@ -132,8 +130,6 @@
  m_Script: {fileID: 11500000, guid: 60237945a79b432f872d1c8c9d7c74a7, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  fireParticleObj: {fileID: 1291653246976116, guid: 42a2483f6efc40e47865798c10be8834,
    type: 3}
--- !u!114 &114091089106639196
MonoBehaviour:
  m_ObjectHideFlags: 0
@@ -147,14 +143,12 @@
  m_Name: 
  m_EditorClassIdentifier: 
  description: Offensive
  projectile: {fileID: 1830508508936448, guid: ea6e7c64a17622d4c929f3dc46d96390, type: 3}
  projectile: {fileID: 1830508508936448, guid: 1c2c55b6a30d0d3488f8260e6f89198c, type: 3}
  woodProjectile_SP: {fileID: 0}
  projectilePoints:
  - {fileID: 4457715277627928}
  epicenter: {fileID: 4795219791600268}
  isMultiAttack: 0
  maxAttackNum: 1
  projectileFireRate: 1
  bWoodAffector: 0
  randomAudioSource: {fileID: 0}
  towerTargetter: {fileID: 114079108543431824}
@@ -229,6 +223,177 @@
  m_Height: 60
  m_Direction: 1
  m_Center: {x: 0, y: 0, z: 0}
--- !u!1 &115777195213859870
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8092596523508851291}
  - component: {fileID: 4439355776557627903}
  - component: {fileID: 6407887908952639974}
  m_Layer: 0
  m_Name: Text (TMP)
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &8092596523508851291
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115777195213859870}
  m_LocalRotation: {x: 0, y: 0.7071068, z: -0.7071068, w: 0}
  m_LocalPosition: {x: 0, y: 0, z: 0.673}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4795219791600268}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 90, y: 180, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0.198}
  m_SizeDelta: {x: 2, y: 0.5}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!23 &4439355776557627903
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115777195213859870}
  m_Enabled: 1
  m_CastShadows: 0
  m_ReceiveShadows: 0
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &6407887908952639974
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 115777195213859870}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_text: '1
'
  m_isRightToLeft: 0
  m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
  m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
  m_fontSharedMaterials: []
  m_fontMaterial: {fileID: 0}
  m_fontMaterials: []
  m_fontColor32:
    serializedVersion: 2
    rgba: 4294967295
  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
  m_enableVertexGradient: 0
  m_colorMode: 3
  m_fontColorGradient:
    topLeft: {r: 1, g: 1, b: 1, a: 1}
    topRight: {r: 1, g: 1, b: 1, a: 1}
    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
    bottomRight: {r: 1, g: 1, b: 1, a: 1}
  m_fontColorGradientPreset: {fileID: 0}
  m_spriteAsset: {fileID: 0}
  m_tintAllSprites: 0
  m_StyleSheet: {fileID: 0}
  m_TextStyleHashCode: -1183493901
  m_overrideHtmlColors: 0
  m_faceColor:
    serializedVersion: 2
    rgba: 4294967295
  m_fontSize: 4
  m_fontSizeBase: 4
  m_fontWeight: 400
  m_enableAutoSizing: 0
  m_fontSizeMin: 18
  m_fontSizeMax: 72
  m_fontStyle: 0
  m_HorizontalAlignment: 2
  m_VerticalAlignment: 256
  m_textAlignment: 65535
  m_characterSpacing: 0
  m_wordSpacing: 0
  m_lineSpacing: 0
  m_lineSpacingMax: 0
  m_paragraphSpacing: 0
  m_charWidthMaxAdj: 0
  m_enableWordWrapping: 1
  m_wordWrappingRatios: 0.4
  m_overflowMode: 0
  m_linkedTextComponent: {fileID: 0}
  parentLinkedComponent: {fileID: 0}
  m_enableKerning: 1
  m_enableExtraPadding: 0
  checkPaddingRequired: 0
  m_isRichText: 1
  m_parseCtrlCharacters: 1
  m_isOrthographic: 0
  m_isCullingEnabled: 0
  m_horizontalMapping: 0
  m_verticalMapping: 0
  m_uvLineOffset: 0
  m_geometrySortingOrder: 0
  m_IsTextObjectScaleStatic: 0
  m_VertexBufferAutoSizeReduction: 1
  m_useMaxVisibleDescender: 1
  m_pageToDisplay: 1
  m_margin: {x: 0, y: 0, z: 0, w: 0}
  m_isUsingLegacyAnimationComponent: 0
  m_isVolumetricText: 0
  m_hasFontAssetChanged: 0
  m_renderer: {fileID: 4439355776557627903}
  m_maskType: 0
  _SortingLayerID: 0
  _SortingOrder: 0
--- !u!1 &4266437695344647020
GameObject:
  m_ObjectHideFlags: 0
@@ -261,7 +426,7 @@
  - {fileID: 6587432828902425260}
  - {fileID: 1413223431285203879}
  m_Father: {fileID: 4795219791600268}
  m_RootOrder: 3
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7914754688254798070
MonoBehaviour:
@@ -565,89 +730,4 @@
  m_CorrespondingSourceObject: {fileID: 9079406959305619424, guid: 2ff5adb841c4a2c47bdf1b1bf72e6b17,
    type: 3}
  m_PrefabInstance: {fileID: 618228890513384575}
  m_PrefabAsset: {fileID: 0}
--- !u!1001 &4370772437094782118
PrefabInstance:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Modification:
    m_TransformParent: {fileID: 4795219791600268}
    m_Modifications:
    - target: {fileID: 2323272225601783335, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_Materials.Array.data[0]
      value:
      objectReference: {fileID: 2100000, guid: 6a37d3cb5f6f9954882bb5782cfec86c, type: 2}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalPosition.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalPosition.y
      value: 0.2
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalPosition.z
      value: 0.6
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.y
      value: 0.7071068
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.z
      value: -0.7071068
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.w
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_RootOrder
      value: 2
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.x
      value: 90
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.y
      value: 180
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalScale.x
      value: 0.72
      objectReference: {fileID: 0}
    - target: {fileID: 6866078322230836259, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_Name
      value: Star
      objectReference: {fileID: 0}
    m_RemovedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: 6c579c0e357fbc04890529f3fea5863a, type: 3}
--- !u!4 &1862906702586422750 stripped
Transform:
  m_CorrespondingSourceObject: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
    type: 3}
  m_PrefabInstance: {fileID: 4370772437094782118}
  m_PrefabAsset: {fileID: 0}
Assets/Prefabs/Towers/Water/TowerLevel.prefab.meta
File was renamed from Assets/Prefabs/Towers/Water/CopyCatTower_0.prefab.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 46284df075bf4504090e7d47372d118e
guid: 7ba4de369892f6641bde552434b612b5
timeCreated: 1499951368
licenseType: Store
NativeFormatImporter:
Assets/Prefabs/Towers/Water/WaterProjectile_1.prefab
File was deleted
Assets/Prefabs/Towers/Water/WaterProjectile_1.prefab.meta
File was deleted
Assets/Prefabs/Towers/Water/WaterProjectile_2.prefab
File was deleted
Assets/Prefabs/Towers/Water/WaterProjectile_2.prefab.meta
File was deleted
Assets/Prefabs/Towers/Water/WaterProjectile_3.prefab
File was deleted
Assets/Prefabs/Towers/Water/WaterProjectile_3.prefab.meta
File was deleted
Assets/Prefabs/Towers/Water/WaterProjectile_4.prefab
File was deleted
Assets/Prefabs/Towers/Water/WaterProjectile_4.prefab.meta
File was deleted
Assets/Prefabs/Towers/WoodTower/BlinkTower.prefab
@@ -15,7 +15,6 @@
  - component: {fileID: 114697314857621730}
  - component: {fileID: 208111389854632630}
  - component: {fileID: 82508339509680898}
  - component: {fileID: 114936617866548888}
  m_Layer: 10
  m_Name: BlinkTower
  m_TagString: Untagged
@@ -72,39 +71,22 @@
      unityObjectReference: {fileID: 11400000, guid: 2e20cdb38c63f4edf8ee385c50c089ce,
        type: 2}
  targetTransform: {fileID: 0}
  bElit: 0
  bBoss: 0
  poisonTex: {fileID: 0}
  frozenTex: {fileID: 0}
  commonTex: {fileID: 0}
  PoisonParticle: {fileID: 0}
  PoisonEndParticle: {fileID: 0}
  SlowDownParticle: {fileID: 0}
  FrostParticle: {fileID: 0}
  FireSkillParticle: {fileID: 0}
  towerName: BlinkTower
  dimensions:
    x: 1
    y: 1
  towerFeature: 0
  materialMonsterSelf: {fileID: 2100000, guid: 55a208306bc8fd64396cc539286e2961, type: 2}
  materialMonsterOppo: {fileID: 2100000, guid: 7ecca3d2bef32794e9d49526593c22ef, type: 2}
  eTowerFuntion: 1
  bulletCtl: {fileID: 0}
  energyCtl: {fileID: 0}
  FreezeBreathCtrl: {fileID: 0}
  levels:
  - {fileID: 114779466188146336, guid: 59e07ac57b910c8499149567209a3607, type: 3}
  - {fileID: 114056922861069036, guid: 07762f03d122d5448b88b833b0b659b6, type: 3}
  - {fileID: 114683032773000130, guid: 514bbe0fa9244574a92e033bac5dfe31, type: 3}
  - {fileID: 114683032773000130, guid: 04a4b557fefbfc840a6a5dbcc2fb11b4, type: 3}
  - {fileID: 114683032773000130, guid: 0bc3790a03f518f45b10851f5a3b2e30, type: 3}
  towerLevel: {fileID: 114779466188146336, guid: 59e07ac57b910c8499149567209a3607,
    type: 3}
  attributeId: 109
  uiImage: {fileID: 21300000, guid: 7421dffecb7e7d644b4ce0980c1f75da, type: 3}
  ElfId: 301
  enemyLayerMask:
    serializedVersion: 2
    m_Bits: 524087
  bDoubleHitElit: 0
  WoodAimAgent: {fileID: 0}
  CanAttack: 1
--- !u!65 &65801875245033440
@@ -247,19 +229,3 @@
    m_PreInfinity: 2
    m_PostInfinity: 2
    m_RotationOrder: 0
--- !u!114 &114936617866548888
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1304972810206532}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: abee75620e9f84f14a9452041dd7a6da, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  damageableBehaviour: {fileID: 114126723238285906}
  deathParticleSystemPrefab: {fileID: 198059975614214484, guid: 7a0476686964e41ac8320b7cf37868c2,
    type: 3}
  deathEffectOffset: {x: 0, y: 0, z: 0}
Assets/Prefabs/Towers/WoodTower/BlinkTowerGhost.prefab
@@ -1,106 +1,5 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1019988406280908
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4685074978469290}
  - component: {fileID: 33272799898454844}
  - component: {fileID: 23482840573321776}
  - component: {fileID: 95204029542362376}
  m_Layer: 0
  m_Name: Base_MachineGun_L01 (1)
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &4685074978469290
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: -0.0000207901, y: 0.399803, z: 0.006250305}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &33272799898454844
MeshFilter:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_Mesh: {fileID: 4300002, guid: dd040609d7aef419b9c85fc5bfa91345, type: 3}
--- !u!23 &23482840573321776
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_Enabled: 1
  m_CastShadows: 2
  m_ReceiveShadows: 1
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2100000, guid: 6fe9580bd67b34580977e0aa4eab9755, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!95 &95204029542362376
Animator:
  serializedVersion: 3
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1019988406280908}
  m_Enabled: 1
  m_Avatar: {fileID: 9000000, guid: dd040609d7aef419b9c85fc5bfa91345, type: 3}
  m_Controller: {fileID: 0}
  m_CullingMode: 0
  m_UpdateMode: 0
  m_ApplyRootMotion: 0
  m_LinearVelocityBlending: 0
  m_WarningMessage:
  m_HasTransformHierarchy: 1
  m_AllowConstantClipSamplingOptimization: 1
  m_KeepAnimatorControllerStateOnDisable: 0
--- !u!1 &1765953084670540
GameObject:
  m_ObjectHideFlags: 0
@@ -131,11 +30,7 @@
  m_LocalPosition: {x: 0, y: 1, z: 0}
  m_LocalScale: {x: 6, y: 6, z: 6}
  m_Children:
  - {fileID: 4685074978469290}
  - {fileID: 4311262752186836}
  - {fileID: 3612191030180932262}
  - {fileID: 8426354765582921509}
  - {fileID: 8720660836564618256}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -189,297 +84,6 @@
  m_Interpolate: 0
  m_Constraints: 0
  m_CollisionDetection: 0
--- !u!1 &1819557052583670
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4311262752186836}
  - component: {fileID: 33106802983885084}
  - component: {fileID: 23105248951433798}
  - component: {fileID: 95768454053860524}
  m_Layer: 0
  m_Name: Turret_MachineGun_L01 (1)
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &4311262752186836
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: -0.0012022133, y: 0.7930937, z: 0.0064944928}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &33106802983885084
MeshFilter:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_Mesh: {fileID: 4300002, guid: ca1b398fbc1a64abaaf160449dab6c93, type: 3}
--- !u!23 &23105248951433798
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_Enabled: 1
  m_CastShadows: 2
  m_ReceiveShadows: 1
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2100000, guid: 6fe9580bd67b34580977e0aa4eab9755, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!95 &95768454053860524
Animator:
  serializedVersion: 3
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1819557052583670}
  m_Enabled: 1
  m_Avatar: {fileID: 9000000, guid: ca1b398fbc1a64abaaf160449dab6c93, type: 3}
  m_Controller: {fileID: 0}
  m_CullingMode: 0
  m_UpdateMode: 0
  m_ApplyRootMotion: 0
  m_LinearVelocityBlending: 0
  m_WarningMessage:
  m_HasTransformHierarchy: 1
  m_AllowConstantClipSamplingOptimization: 1
  m_KeepAnimatorControllerStateOnDisable: 0
--- !u!1 &568921316117492909
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 8720660836564618256}
  - component: {fileID: 316481129551519764}
  - component: {fileID: 6695389077887423771}
  m_Layer: 0
  m_Name: Body
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &8720660836564618256
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 568921316117492909}
  m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
  m_LocalPosition: {x: 0, y: 0.5, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!212 &316481129551519764
SpriteRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 568921316117492909}
  m_Enabled: 1
  m_CastShadows: 0
  m_ReceiveShadows: 0
  m_DynamicOccludee: 1
  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: 0
  m_Sprite: {fileID: 21300000, guid: 21e4d96273eadb74e93861c864e82afa, 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.35, y: 1.35}
  m_AdaptiveModeThreshold: 0.5
  m_SpriteTileMode: 0
  m_WasSpriteAssigned: 1
  m_MaskInteraction: 0
  m_SpriteSortPoint: 0
--- !u!114 &6695389077887423771
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 568921316117492909}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 70719dcea2b0be54580a41e62debeab1, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!1 &7024398184089023210
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 3612191030180932262}
  - component: {fileID: 3668669315062734552}
  - component: {fileID: 4652148941928140349}
  - component: {fileID: 8798624205418719708}
  m_Layer: 0
  m_Name: Cube
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 0
--- !u!4 &3612191030180932262
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
  m_LocalPosition: {x: 0, y: 0.5, z: 0}
  m_LocalScale: {x: 1.6, y: 1.6, z: 1.6}
  m_Children: []
  m_Father: {fileID: 4297149115419984}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!33 &3668669315062734552
MeshFilter:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4652148941928140349
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_Enabled: 1
  m_CastShadows: 1
  m_ReceiveShadows: 1
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2100000, guid: d51a83a7cbd64e64eb18616b863dbe57, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!65 &8798624205418719708
BoxCollider:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 7024398184089023210}
  m_Material: {fileID: 0}
  m_IsTrigger: 0
  m_Enabled: 1
  serializedVersion: 2
  m_Size: {x: 1, y: 1, z: 1}
  m_Center: {x: 0, y: 0, z: 0}
--- !u!1001 &2401793392069015651
PrefabInstance:
  m_ObjectHideFlags: 0
@@ -530,7 +134,7 @@
    - target: {fileID: 6171215027049731910, guid: e81c6e88d56cfe143a95af57340c011c,
        type: 3}
      propertyPath: m_RootOrder
      value: 3
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 6171215027049731910, guid: e81c6e88d56cfe143a95af57340c011c,
        type: 3}
Assets/Prefabs/Towers/WoodTower/BlinkTower_1.prefab
File was deleted
Assets/Prefabs/Towers/WoodTower/BlinkTower_1.prefab.meta
File was deleted
Assets/Prefabs/Towers/WoodTower/BlinkTower_2.prefab
File was deleted
Assets/Prefabs/Towers/WoodTower/BlinkTower_2.prefab.meta
File was deleted
Assets/Prefabs/Towers/WoodTower/BlinkTower_3.prefab
File was deleted
Assets/Prefabs/Towers/WoodTower/BlinkTower_3.prefab.meta
File was deleted
Assets/Prefabs/Towers/WoodTower/BlinkTower_4.prefab
File was deleted
Assets/Prefabs/Towers/WoodTower/BlinkTower_4.prefab.meta
File was deleted
Assets/Prefabs/Towers/WoodTower/Projectile.prefab
Assets/Prefabs/Towers/WoodTower/Projectile.prefab.meta
Assets/Prefabs/Towers/WoodTower/ProjectileSp.prefab
Assets/Prefabs/Towers/WoodTower/ProjectileSp.prefab.meta
Assets/Prefabs/Towers/WoodTower/TowerLevel.prefab
File was renamed from Assets/Prefabs/Towers/WoodTower/BlinkTower_0.prefab
@@ -11,7 +11,7 @@
  - component: {fileID: 4795219791600268}
  - component: {fileID: 114779466188146336}
  m_Layer: 10
  m_Name: BlinkTower_0
  m_Name: TowerLevel
  m_TagString: PlaceTower
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
@@ -30,8 +30,8 @@
  m_Children:
  - {fileID: 4966141693256532}
  - {fileID: 4561687637155890}
  - {fileID: 1862906702586422750}
  - {fileID: 8585450897344132209}
  - {fileID: 4241797131889316145}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
@@ -51,13 +51,11 @@
    type: 3}
  UpgradeEffectPrefab: {fileID: 6847503030253729540, guid: f8ec855cfd7e13a4ebb2f2cbb8bbc480,
    type: 3}
  levelDamager: {fileID: 114588164740221456, guid: 1a5f1a77044aa0841ad8a40825839036,
    type: 3}
  levelData: {fileID: 11400000, guid: 67687baaef809441e8b698087793fe51, type: 2}
  Body: {fileID: 1453801431237962450}
  AttackBody: {fileID: 5645412422946162502}
  canPlaceMesh: {fileID: 6224896426363769255}
  ActionAnimator: {fileID: 925868002724742077}
  LevelText: {fileID: 5389360911795935808}
--- !u!1 &1430798241748466
GameObject:
  m_ObjectHideFlags: 0
@@ -132,8 +130,6 @@
  m_Script: {fileID: 11500000, guid: 60237945a79b432f872d1c8c9d7c74a7, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  fireParticleObj: {fileID: 1752905781611240, guid: 3bdb0fa163915264f8f8a410ecefe0cc,
    type: 3}
--- !u!114 &114091089106639196
MonoBehaviour:
  m_ObjectHideFlags: 0
@@ -154,9 +150,7 @@
  projectilePoints:
  - {fileID: 4457715277627928}
  epicenter: {fileID: 4795219791600268}
  isMultiAttack: 0
  maxAttackNum: 1
  projectileFireRate: 1
  bWoodAffector: 1
  randomAudioSource: {fileID: 0}
  towerTargetter: {fileID: 114079108543431824}
@@ -313,6 +307,175 @@
  m_WasSpriteAssigned: 1
  m_MaskInteraction: 0
  m_SpriteSortPoint: 0
--- !u!1 &3641605081979662604
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 4241797131889316145}
  - component: {fileID: 710195361442095373}
  - component: {fileID: 5389360911795935808}
  m_Layer: 0
  m_Name: Text (TMP)
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &4241797131889316145
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3641605081979662604}
  m_LocalRotation: {x: 0, y: 0.7071068, z: -0.7071068, w: 0}
  m_LocalPosition: {x: 0, y: 0, z: 0.679}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 4795219791600268}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 90, y: 180, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -0.197, y: 0.203}
  m_SizeDelta: {x: 2, y: 0.5}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!23 &710195361442095373
MeshRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3641605081979662604}
  m_Enabled: 1
  m_CastShadows: 0
  m_ReceiveShadows: 0
  m_DynamicOccludee: 1
  m_MotionVectors: 1
  m_LightProbeUsage: 1
  m_ReflectionProbeUsage: 1
  m_RayTracingMode: 2
  m_RayTraceProcedural: 0
  m_RenderingLayerMask: 1
  m_RendererPriority: 0
  m_Materials:
  - {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
  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: 3
  m_MinimumChartSize: 4
  m_AutoUVMaxDistance: 0.5
  m_AutoUVMaxAngle: 89
  m_LightmapParameters: {fileID: 0}
  m_SortingLayerID: 0
  m_SortingLayer: 0
  m_SortingOrder: 0
  m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &5389360911795935808
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3641605081979662604}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_text: 1
  m_isRightToLeft: 0
  m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
  m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
  m_fontSharedMaterials: []
  m_fontMaterial: {fileID: 0}
  m_fontMaterials: []
  m_fontColor32:
    serializedVersion: 2
    rgba: 4294967295
  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
  m_enableVertexGradient: 0
  m_colorMode: 3
  m_fontColorGradient:
    topLeft: {r: 1, g: 1, b: 1, a: 1}
    topRight: {r: 1, g: 1, b: 1, a: 1}
    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
    bottomRight: {r: 1, g: 1, b: 1, a: 1}
  m_fontColorGradientPreset: {fileID: 0}
  m_spriteAsset: {fileID: 0}
  m_tintAllSprites: 0
  m_StyleSheet: {fileID: 0}
  m_TextStyleHashCode: -1183493901
  m_overrideHtmlColors: 0
  m_faceColor:
    serializedVersion: 2
    rgba: 4294967295
  m_fontSize: 4
  m_fontSizeBase: 4
  m_fontWeight: 400
  m_enableAutoSizing: 0
  m_fontSizeMin: 18
  m_fontSizeMax: 72
  m_fontStyle: 0
  m_HorizontalAlignment: 2
  m_VerticalAlignment: 256
  m_textAlignment: 65535
  m_characterSpacing: 0
  m_wordSpacing: 0
  m_lineSpacing: 0
  m_lineSpacingMax: 0
  m_paragraphSpacing: 0
  m_charWidthMaxAdj: 0
  m_enableWordWrapping: 1
  m_wordWrappingRatios: 0.4
  m_overflowMode: 0
  m_linkedTextComponent: {fileID: 0}
  parentLinkedComponent: {fileID: 0}
  m_enableKerning: 1
  m_enableExtraPadding: 0
  checkPaddingRequired: 0
  m_isRichText: 1
  m_parseCtrlCharacters: 1
  m_isOrthographic: 0
  m_isCullingEnabled: 0
  m_horizontalMapping: 0
  m_verticalMapping: 0
  m_uvLineOffset: 0
  m_geometrySortingOrder: 0
  m_IsTextObjectScaleStatic: 0
  m_VertexBufferAutoSizeReduction: 1
  m_useMaxVisibleDescender: 1
  m_pageToDisplay: 1
  m_margin: {x: 0, y: 0, z: 0.3854326, w: 0}
  m_isUsingLegacyAnimationComponent: 0
  m_isVolumetricText: 0
  m_hasFontAssetChanged: 0
  m_renderer: {fileID: 710195361442095373}
  m_maskType: 0
  _SortingLayerID: 0
  _SortingOrder: 0
--- !u!1 &5645412422946162502
GameObject:
  m_ObjectHideFlags: 0
@@ -463,7 +626,7 @@
  - {fileID: 874519973086491728}
  - {fileID: 5188825432757432286}
  m_Father: {fileID: 4795219791600268}
  m_RootOrder: 3
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2717639926293555112
MonoBehaviour:
@@ -648,110 +811,15 @@
      objectReference: {fileID: 0}
    m_RemovedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: 2ff5adb841c4a2c47bdf1b1bf72e6b17, type: 3}
--- !u!4 &3058760176760597985 stripped
Transform:
  m_CorrespondingSourceObject: {fileID: 148945322413984678, guid: 2ff5adb841c4a2c47bdf1b1bf72e6b17,
    type: 3}
  m_PrefabInstance: {fileID: 2910397211145414215}
  m_PrefabAsset: {fileID: 0}
--- !u!23 &6224896426363769255 stripped
MeshRenderer:
  m_CorrespondingSourceObject: {fileID: 9079406959305619424, guid: 2ff5adb841c4a2c47bdf1b1bf72e6b17,
    type: 3}
  m_PrefabInstance: {fileID: 2910397211145414215}
  m_PrefabAsset: {fileID: 0}
--- !u!1001 &4370772437094782118
PrefabInstance:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Modification:
    m_TransformParent: {fileID: 4795219791600268}
    m_Modifications:
    - target: {fileID: 2323272225601783335, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_Materials.Array.data[0]
      value:
      objectReference: {fileID: 2100000, guid: 6a37d3cb5f6f9954882bb5782cfec86c, type: 2}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalPosition.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalPosition.y
      value: 0.2
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalPosition.z
      value: 0.6
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.y
      value: 0.7071068
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.z
      value: -0.7071068
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalRotation.w
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_RootOrder
      value: 2
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.x
      value: 90
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.y
      value: 180
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalScale.x
      value: 0.864
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalScale.y
      value: 0.6
      objectReference: {fileID: 0}
    - target: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_LocalScale.z
      value: 0.6
      objectReference: {fileID: 0}
    - target: {fileID: 6866078322230836259, guid: 6c579c0e357fbc04890529f3fea5863a,
        type: 3}
      propertyPath: m_Name
      value: Star
      objectReference: {fileID: 0}
    m_RemovedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: 6c579c0e357fbc04890529f3fea5863a, type: 3}
--- !u!4 &1862906702586422750 stripped
--- !u!4 &3058760176760597985 stripped
Transform:
  m_CorrespondingSourceObject: {fileID: 2698295651963367800, guid: 6c579c0e357fbc04890529f3fea5863a,
  m_CorrespondingSourceObject: {fileID: 148945322413984678, guid: 2ff5adb841c4a2c47bdf1b1bf72e6b17,
    type: 3}
  m_PrefabInstance: {fileID: 4370772437094782118}
  m_PrefabInstance: {fileID: 2910397211145414215}
  m_PrefabAsset: {fileID: 0}
Assets/Prefabs/Towers/WoodTower/TowerLevel.prefab.meta
Assets/Prefabs/Towers/WoodTower/WProjectile_1.prefab
File was deleted
Assets/Prefabs/Towers/WoodTower/WProjectile_1.prefab.meta
File was deleted
Assets/Prefabs/Towers/WoodTower/WProjectile_2.prefab
File was deleted
Assets/Prefabs/Towers/WoodTower/WProjectile_2.prefab.meta
File was deleted
Assets/Prefabs/Towers/WoodTower/WProjectile_3.prefab
File was deleted
Assets/Prefabs/Towers/WoodTower/WProjectile_3.prefab.meta
File was deleted
Assets/Prefabs/Towers/WoodTower/WProjectile_4.prefab
File was deleted
Assets/Prefabs/Towers/WoodTower/WProjectile_4.prefab.meta
File was deleted
Assets/Prefabs/UI/GM.prefab
@@ -32,6 +32,7 @@
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 1671498435335712511}
  - {fileID: 1671498435518810765}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -145,8 +146,15 @@
  m_Script: {fileID: 11500000, guid: b299ed121c24b1347a4c0dffb392051e, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  GMPanel: {fileID: 0}
  RandomText: {fileID: 0}
  GMPanel: {fileID: 1671498435518810760}
  RandomText: {fileID: 1671498436688902808}
  WoodToggle: {fileID: 2321031378959899063}
  WoodInput: {fileID: 290253883921015524}
  WaterToggle: {fileID: 8622412320246987841}
  WaterInput: {fileID: 6246219114593412849}
  FireToggle: {fileID: 202409865981996142}
  FireInput: {fileID: 82238531229658574}
  InfiniteSkillToggle: {fileID: 111332926334664283}
--- !u!1 &1671498435335712504
GameObject:
  m_ObjectHideFlags: 0
@@ -226,3 +234,364 @@
    m_VerticalOverflow: 0
    m_LineSpacing: 1
  m_Text: GM
--- !u!1001 &4127735579456056082
PrefabInstance:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Modification:
    m_TransformParent: {fileID: 1671498435182872929}
    m_Modifications:
    - target: {fileID: 580281434, guid: 956e8afbc5c59e6429b9cc31c627d660, type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 253118173309355446, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 1019857694183088589, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 1300267123527524047, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 1749341164731477527, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 1836725507681989285, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 1890679990068197469, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 2267357075442126035, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 2345193589857388592, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 3349256845150633716, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 3349256845281063795, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 3349256846154412986, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 3349256846538989978, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_Name
      value: GMPanel
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989978, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_IsActive
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalPosition.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalPosition.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalPosition.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalRotation.x
      value: -0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalRotation.y
      value: -0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalRotation.z
      value: -0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalRotation.w
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_RootOrder
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchoredPosition.x
      value: -423
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchoredPosition.y
      value: 888.0005
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_SizeDelta.x
      value: 930
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_SizeDelta.y
      value: 1870
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchorMin.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchorMin.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchorMax.x
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchorMax.y
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_Pivot.x
      value: 0.5
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_Pivot.y
      value: 0.5
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846721294076, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 3349256847075511827, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 3349256847133983160, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 3349256847153310373, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 4044681877253777814, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 4289594054294636412, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 4416282546202965636, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 4488881254114326629, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 5683648220907820883, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 5974431036818947538, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 6923322012616660611, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 7822809742738407517, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 9116109220945698194, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    - target: {fileID: 9150022674153898468, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1671498435182872928}
    m_RemovedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: 956e8afbc5c59e6429b9cc31c627d660, type: 3}
--- !u!1 &1671498435518810760 stripped
GameObject:
  m_CorrespondingSourceObject: {fileID: 3349256846538989978, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
--- !u!224 &1671498435518810765 stripped
RectTransform:
  m_CorrespondingSourceObject: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
--- !u!114 &1671498436688902808 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 3349256845831065994, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!114 &2321031378959899063 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 1836725507681989285, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!114 &290253883921015524 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 4417919072754338294, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!114 &202409865981996142 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 4289594054294636412, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!114 &82238531229658574 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 4065767645695379164, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!114 &8622412320246987841 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 5683648220907820883, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!114 &6246219114593412849 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 8063605604593192419, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!114 &111332926334664283 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 4090149269951173961, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 4127735579456056082}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
  m_Name:
  m_EditorClassIdentifier:
Assets/Prefabs/UI/GMPanel.prefab
Diff too large
Assets/Resources/UI/DengChang_201.prefab
Assets/Resources/UI/DengChang_201.prefab.meta
Assets/Resources/UI/DengChang_301.prefab
Assets/Resources/UI/DengChang_301.prefab.meta
Assets/Resources/UI/ToBattle_201.prefab
Assets/Resources/UI/ToBattle_201.prefab.meta
Assets/Resources/UI/ToBattle_301.prefab
Assets/Resources/UI/ToBattle_301.prefab.meta
Assets/Scenes/Levels/Battle/Endless2D.unity
@@ -1243,18 +1243,6 @@
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 167919691}
  m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!114 &188161146 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 8706660362263686852, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 3349256845298627641}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!1 &191237708
GameObject:
  m_ObjectHideFlags: 0
@@ -1416,7 +1404,7 @@
    - target: {fileID: 4657746055211589680, guid: 64f56bea91238bd428c595869a4070ad,
        type: 3}
      propertyPath: m_RootOrder
      value: 5
      value: 4
      objectReference: {fileID: 0}
    - target: {fileID: 4657746055211589680, guid: 64f56bea91238bd428c595869a4070ad,
        type: 3}
@@ -2756,18 +2744,6 @@
    type: 3}
  m_PrefabInstance: {fileID: 533867355}
  m_PrefabAsset: {fileID: 0}
--- !u!114 &551527859 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 3349256845831065994, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 3349256845298627641}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!1 &567180756
GameObject:
  m_ObjectHideFlags: 0
@@ -4298,7 +4274,6 @@
  - {fileID: 1693998523}
  - {fileID: 1777094488}
  - {fileID: 799533491}
  - {fileID: 1511101862}
  - {fileID: 1176213066}
  - {fileID: 213376311}
  m_Father: {fileID: 1340671931}
@@ -4320,6 +4295,11 @@
        type: 3}
      propertyPath: m_Name
      value: BottomCanvas
      objectReference: {fileID: 0}
    - target: {fileID: 4623057512704841786, guid: 29da21b318f42054db30c52123aa4dbf,
        type: 3}
      propertyPath: m_IsActive
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 4623057512704841790, guid: 29da21b318f42054db30c52123aa4dbf,
        type: 3}
@@ -5926,18 +5906,6 @@
    type: 3}
  m_PrefabInstance: {fileID: 1671498436155399979}
  m_PrefabAsset: {fileID: 0}
--- !u!114 &1176213067 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 1671498435182872928, guid: dcbcc0c51f9291c498c66e05663360e2,
    type: 3}
  m_PrefabInstance: {fileID: 1671498436155399979}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 49762375}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: b299ed121c24b1347a4c0dffb392051e, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!1 &1178594625
GameObject:
  m_ObjectHideFlags: 0
@@ -7085,18 +7053,6 @@
    type: 3}
  m_PrefabInstance: {fileID: 877647585}
  m_PrefabAsset: {fileID: 0}
--- !u!114 &1430828456 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 2060028181757369343, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 3349256845298627641}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!1 &1435697234
GameObject:
  m_ObjectHideFlags: 0
@@ -7294,18 +7250,6 @@
  m_Father: {fileID: 98103728}
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1511101859 stripped
GameObject:
  m_CorrespondingSourceObject: {fileID: 3349256846538989978, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 3349256845298627641}
  m_PrefabAsset: {fileID: 0}
--- !u!224 &1511101862 stripped
RectTransform:
  m_CorrespondingSourceObject: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 3349256845298627641}
  m_PrefabAsset: {fileID: 0}
--- !u!1 &1532824631
GameObject:
  m_ObjectHideFlags: 0
@@ -9254,18 +9198,6 @@
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1813750110}
  m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!114 &1832175059 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 5006600019238887402, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 3349256845298627641}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!1 &1861603046
GameObject:
  m_ObjectHideFlags: 0
@@ -10895,36 +10827,6 @@
  m_Modification:
    m_TransformParent: {fileID: 849284131}
    m_Modifications:
    - target: {fileID: 1671498435182872928, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
      propertyPath: GMPanel
      value:
      objectReference: {fileID: 1511101859}
    - target: {fileID: 1671498435182872928, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
      propertyPath: RandomText
      value:
      objectReference: {fileID: 551527859}
    - target: {fileID: 1671498435182872928, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
      propertyPath: WoodToggleGroup
      value:
      objectReference: {fileID: 188161146}
    - target: {fileID: 1671498435182872928, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
      propertyPath: FireToggleGroup
      value:
      objectReference: {fileID: 1430828456}
    - target: {fileID: 1671498435182872928, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
      propertyPath: WaterToggleGroup
      value:
      objectReference: {fileID: 1832175059}
    - target: {fileID: 1671498435182872928, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
      propertyPath: InfiniteSkillToggle
      value:
      objectReference: {fileID: 3349256845298627642}
    - target: {fileID: 1671498435182872929, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
      propertyPath: m_LocalPosition.x
@@ -10963,7 +10865,7 @@
    - target: {fileID: 1671498435182872929, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
      propertyPath: m_RootOrder
      value: 4
      value: 3
      objectReference: {fileID: 0}
    - target: {fileID: 1671498435182872929, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
@@ -11035,275 +10937,5 @@
      propertyPath: m_Name
      value: GM
      objectReference: {fileID: 0}
    - target: {fileID: 1671498435182872930, guid: dcbcc0c51f9291c498c66e05663360e2,
        type: 3}
      propertyPath: m_IsActive
      value: 1
      objectReference: {fileID: 0}
    m_RemovedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: dcbcc0c51f9291c498c66e05663360e2, type: 3}
--- !u!1001 &3349256845298627641
PrefabInstance:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Modification:
    m_TransformParent: {fileID: 849284131}
    m_Modifications:
    - target: {fileID: 580281434, guid: 956e8afbc5c59e6429b9cc31c627d660, type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 253118173309355446, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 1019857694183088589, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 1300267123527524047, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 1749341164731477527, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 1836725507681989285, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 1890679990068197469, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 2267357075442126035, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 2345193589857388592, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 3349256845150633716, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 3349256845281063795, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 3349256846154412986, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 3349256846538989978, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_Name
      value: GMPanel
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989978, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_IsActive
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalPosition.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalPosition.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalPosition.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalRotation.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalRotation.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalRotation.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalRotation.w
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_RootOrder
      value: 3
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_LocalEulerAnglesHint.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchoredPosition.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchoredPosition.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_SizeDelta.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_SizeDelta.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchorMin.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchorMin.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchorMax.x
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_AnchorMax.y
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_Pivot.x
      value: 0.5
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846538989983, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_Pivot.y
      value: 0.5
      objectReference: {fileID: 0}
    - target: {fileID: 3349256846721294076, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 3349256847075511827, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 3349256847133983160, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 3349256847153310373, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 4044681877253777814, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 4289594054294636412, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 4416282546202965636, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 4488881254114326629, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 5683648220907820883, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 5974431036818947538, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 6923322012616660611, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 7822809742738407517, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 9116109220945698194, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    - target: {fileID: 9150022674153898468, guid: 956e8afbc5c59e6429b9cc31c627d660,
        type: 3}
      propertyPath: onValueChanged.m_PersistentCalls.m_Calls.Array.data[0].m_Target
      value:
      objectReference: {fileID: 1176213067}
    m_RemovedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: 956e8afbc5c59e6429b9cc31c627d660, type: 3}
--- !u!114 &3349256845298627642 stripped
MonoBehaviour:
  m_CorrespondingSourceObject: {fileID: 4090149269951173961, guid: 956e8afbc5c59e6429b9cc31c627d660,
    type: 3}
  m_PrefabInstance: {fileID: 3349256845298627641}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
  m_Name:
  m_EditorClassIdentifier:
Assets/Scripts/ActionGameFramework/Health/DamageCollider.cs
@@ -60,7 +60,7 @@
            LazyLoad();
            BallisticAttack ballisticAttack = damager.GetComponent<BallisticAttack>();
            ballisticAttack.DealDamage((Targetable)damageableBehaviour, ballisticAttack.attributeId, damager.IsEnhancedBullet);
            ballisticAttack.DealDamage((Targetable)damageableBehaviour, damager.IsEnhancedBullet);
            damager.HasDamaged(c.transform.position, damageableBehaviour.configuration.alignmentProvider);
        }
Assets/Scripts/ActionGameFramework/Health/Damager.cs
@@ -61,6 +61,8 @@
        /// </summary>
        public SerializableIAlignmentProvider alignment;
        public Tower TowerPtr;
        /// <summary>
        /// Gets the alignment of the damager
        /// </summary>
Assets/Scripts/Data/ElfInfoData.cs
New file
@@ -0,0 +1,54 @@
using System.Collections.Generic;
/**
 * 精灵数据表处理类
 * @Author: chenxin
 * @Date: 2020-12-01 14:44:37
 */
namespace KTGMGemClient
{
    public class ElfInfoData
    {
        private static List<elf_info> elfInfoList;
        public static void Init()
        {
            elfInfoList = JsonDataCenter.GetList<elf_info>();
        }
        /// <summary>
        /// 根据id获取配置数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static elf_info GetDataById(int id)
        {
            for (int i = 0; i < elfInfoList.Count; ++i)
            {
                if (elfInfoList[i].id == id)
                    return elfInfoList[i];
            }
            return null;
        }
        /// <summary>
        /// 根据id和等级获得基础伤害
        /// </summary>
        /// <param name="id">精灵Id</param>
        /// <param name="level">精灵等级,从0开始</param>
        /// <returns></returns>
        public static float GetBasicDamage(int id, int level)
        {
            elf_info info = GetDataById(id);
            if (info == null) return 0f;
            elf_upgrade upgrade = ElfUpgradeData.GetDataById(level + 1);
            if (upgrade == null) return 0f;
            return upgrade.ratio / 1000f * info.b_attack;
        }
    }
}
Assets/Scripts/Data/ElfInfoData.cs.meta
File was renamed from Assets/Scripts/TowerDefense/UI/HUD/SceneTowerLvl.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: fe114261437f8204b9dd5f4322a1bf10
guid: 67576e8b7e3bf344ab65851da55cd4be
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Assets/Scripts/Data/ElfUpgradeData.cs
New file
@@ -0,0 +1,43 @@
using System.Collections.Generic;
/**
 * 精灵场内升级表处理类
 * @Author: chenxin
 * @Date: 2020-12-01 16:13:45
 */
namespace KTGMGemClient
{
    public class ElfUpgradeData
    {
        private static List<elf_upgrade> elfUpgradeList;
        /// <summary>
        /// 精灵塔等级上限
        /// </summary>
        public static int MaxTowerLevel { get; private set; } = 5;
        public static void Init()
        {
            elfUpgradeList = JsonDataCenter.GetList<elf_upgrade>();
            if (elfUpgradeList.Count - 1 >= 0)
                MaxTowerLevel = elfUpgradeList[elfUpgradeList.Count - 1].id;
        }
        /// <summary>
        /// 根据id获取表数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static elf_upgrade GetDataById(int id)
        {
            for (int i = 0; i < elfUpgradeList.Count; ++i)
            {
                if (elfUpgradeList[i].id == id)
                    return elfUpgradeList[i];
            }
            return null;
        }
    }
}
Assets/Scripts/Data/ElfUpgradeData.cs.meta
copy from Assets/Scripts/TowerDefense/UI/HUD/SceneTowerLvl.cs.meta copy to Assets/Scripts/Data/ElfUpgradeData.cs.meta
File was copied from Assets/Scripts/TowerDefense/UI/HUD/SceneTowerLvl.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: fe114261437f8204b9dd5f4322a1bf10
guid: 292196aa1cca6c54ca3d3a07c8eeef93
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Assets/Scripts/Json/JsonDataCenter.cs
@@ -264,6 +264,8 @@
            EndlessBuffData.Init();
            EndlessBossData.Init();
            EndlessBossSkillData.Init();
            ElfInfoData.Init();
            ElfUpgradeData.Init();
            GameConfig.JsonReadDone = true;
        }
    }
Assets/Scripts/Net/NetExtends/Table.cs
@@ -40,6 +40,8 @@
            "boxsequence.json",
            "box.json",
            "resource.json",
            "elf_info.json",
            "elf_upgrade.json",
            "endless_boss.json",
            "endless_buff.json",
            "endless_enemy.json",
@@ -178,6 +180,28 @@
                    foreach (JsonData item in data)
                    {
                        resource tmp = resource.CreateFromJson(item);
                        allData.Add(tmp as tabledata);
                    }
                    JsonDataCenter.allData.Add(tablename, allData);
                    break;
                case "elf_info":
                    //allData.Clear();
                    foreach (JsonData item in data)
                    {
                        elf_info tmp = elf_info.CreateFromJson(item);
                        allData.Add(tmp as tabledata);
                    }
                    JsonDataCenter.allData.Add(tablename, allData);
                    break;
                case "elf_upgrade":
                    //allData.Clear();
                    foreach (JsonData item in data)
                    {
                        elf_upgrade tmp = elf_upgrade.CreateFromJson(item);
                        allData.Add(tmp as tabledata);
                    }
                    JsonDataCenter.allData.Add(tablename, allData);
@@ -902,6 +926,92 @@
    }
    //! 生成文件 elf_info(精灵数据表).xlsx
    public class elf_info : tabledata {
        public int getid(){
            return id;
        }
        // id
        public int id;
        // 精灵名称
        public string name;
        // 基础攻击力
        public int b_attack;
        // 基础暴击率
        public int b_crit;
        // 基础暴击伤害
        public int b_critdmg;
        // 基础攻速
        public float b_atkf;
        // 普攻技能
        public int n_skill;
        // 大招技能
        public int s_skill;
        // 大招类型
        public string fire_type;
        // 召唤单位
        public int summon;
        public static elf_info CreateFromJson(JsonData item)
        {
            elf_info _elf_info = new elf_info();
            int index = 0;
            _elf_info.id = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _elf_info.name = GameUtils.GetString(item[index++].ToString());
            _elf_info.b_attack = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _elf_info.b_crit = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _elf_info.b_critdmg = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _elf_info.b_atkf = float.Parse(GameUtils.GetString(item[index++].ToString()));
            _elf_info.n_skill = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _elf_info.s_skill = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _elf_info.fire_type = GameUtils.GetString(item[index++].ToString());
            _elf_info.summon = int.Parse(GameUtils.GetString(item[index++].ToString()));
            return _elf_info;
        }
    }
    //! 生成文件 elf_upgrade(场内升级表).xlsx
    public class elf_upgrade : tabledata {
        public int getid(){
            return id;
        }
        // id
        public int id;
        // 攻击比率
        public int ratio;
        public static elf_upgrade CreateFromJson(JsonData item)
        {
            elf_upgrade _elf_upgrade = new elf_upgrade();
            int index = 0;
            _elf_upgrade.id = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _elf_upgrade.ratio = int.Parse(GameUtils.GetString(item[index++].ToString()));
            return _elf_upgrade;
        }
    }
    //! 生成文件 endless_boss(无尽模式boss).xlsx
    public class endless_boss : tabledata {
        public int getid(){
Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
@@ -31,9 +31,6 @@
        /// 木塔最后一击是特殊攻击,需要替换projectile
        /// </summary>
        public GameObject woodProjectile_SP;
        //
        protected GameObject projectile1;
        protected GameObject projectile2;
        /// <summary>
        /// The list of points to launch the projectiles from
@@ -46,25 +43,9 @@
        public Transform epicenter;
        /// <summary>
        /// Configuration for when the tower does splash damage
        /// </summary>
        public bool isMultiAttack;
        /// <summary>
        /// 如果是多目标攻击,最多攻击目标
        /// </summary>
        public int maxAttackNum = 1;
        /// <summary>
        /// The fire rate in fires-per-second
        /// </summary>
        [SerializeField]
        private float projectileFireRate = 1;
        public float FireRate
        {
            get { return 1 / GetFireDuration(); }
        }
        /// <summary>
        /// 是否木属性数据
@@ -182,7 +163,7 @@
                float rateAdd = 0;
                if (fireRateAdd != null)
                    rateAdd = fireRateAdd.GetFireSpeedAdd(towerPtr.attributeId);
                    rateAdd = fireRateAdd.GetFireSpeedAdd(towerPtr.ElfId);
                return rateAdd > 1 ? rateAdd : fireSpeed;
            }
        }
@@ -301,17 +282,6 @@
        public Damager damagerProjectile2
        {
            get { return projectile == null ? null : projectile.GetComponent<Damager>(); }
        }
        /// <summary>
        /// Returns the total projectile damage
        /// </summary>
        public float GetProjectileDamage()
        {
            var splash = projectile.GetComponent<SplashDamager>();
            float splashDamage = splash != null ? splash.damage : 0;
            return damagerProjectile.finalDamage + splashDamage;
        }
        /// <summary>
@@ -483,7 +453,7 @@
                Damager damager = projectile.gameObject.GetComponent<Damager>();
                float finalDamage = damager.damage;
                List<EndlessBuffConfig> list = EndlessBuffManager.instance.GetBuffListByEffectType(EndlessBuffEffectType.AttackAdd, towerPtr.attributeId);
                List<EndlessBuffConfig> list = EndlessBuffManager.instance.GetBuffListByEffectType(EndlessBuffEffectType.AttackAdd, towerPtr.ElfId);
                float ratio = 0;
                float add = 0;
@@ -573,16 +543,6 @@
        }
        /// <summary>
        /// 获取子弹发射时间间隔
        /// </summary>
        public float GetFireDuration()
        {
            DecreaseTowerAttackCD endlessBuff = (DecreaseTowerAttackCD)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.DecreaseTowerAttackCD);
            return endlessBuff != null ? endlessBuff.GetDecreaseCD(towerPtr.attributeId, 1 / projectileFireRate) : 1 / projectileFireRate;
        }
        /// <summary>
        /// Update the timers
        /// </summary>
        protected virtual void Update()
@@ -597,7 +557,7 @@
            if (m_TrackingEnemy != null && m_FireTimer < 0)
            {
                m_FireTimer = GetFireDuration();
                m_FireTimer = towerLevel.GetFireRate();
                if (fInEnergy > 0)
                    m_FireTimer /= finalFireSpeed;
@@ -628,15 +588,14 @@
        /// </summary>
        public virtual void FireProjectile()
        {
            // 不再处理多子弹攻击,确保只有一个弹道
            isMultiAttack = false;
            m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector);
            GameObject go = damagerProjectile.gameObject;
            if (m_TrackingEnemy == null || fillBulletTime > 0) return;
            go.GetComponent<Damager>().IsEnhancedBullet = false;
            Damager goDamager = go.GetComponent<Damager>();
            goDamager.IsEnhancedBullet = false;
            goDamager.TowerPtr = towerPtr;
            // 处理子弹充能相关的内容
            if (towerPtr && towerPtr.bulletCtl != null)
@@ -658,6 +617,7 @@
                    tmpDamager.damageMulti = 10.0f;
                    tmpDamager.damage = damagerProjectile.damage;
                    tmpDamager.IsEnhancedBullet = true;
                    tmpDamager.TowerPtr = towerPtr;
                }
                // 下一颗子弹是强化子弹,然后直接蓄力
@@ -675,26 +635,12 @@
                }
            }
            if (isMultiAttack)
            if (Targetter.bSearchTarget)
            {
                List<Targetable> enemies = towerTargetter.GetAllTargets();
                if ((enemies != null) && (Targetter.bSearchTarget))
                    m_Launcher.Launch(enemies, projectile, projectilePoints, maxAttackNum);
                m_Launcher.Launch(m_TrackingEnemy, go, projectilePoints);
                if (AudioSourceManager.Ins)
                    AudioSourceManager.Ins.Play(audioEnum);
            }
            else
            {
                if (Targetter.bSearchTarget)
                {
                    m_Launcher.Launch(m_TrackingEnemy, go, projectilePoints);
                    if (AudioSourceManager.Ins)
                        AudioSourceManager.Ins.Play(audioEnum);
                }
            }
            // if (randomAudioSource != null)
            // {
            //     if (Targetter.bSearchTarget)
            //         randomAudioSource.PlayRandomClip();
            // }
        }
        /// <summary>
Assets/Scripts/TowerDefense/Agents/Agent.cs
@@ -474,18 +474,6 @@
            poisonTimes = 0;
            timeToPoisonHurt = 0;
            CanMove = true;
            /*// 如果对应的粒子不为空,则播放
            if( spawnParticle)
            {
                ParticleSystem tpar = Instantiate<ParticleSystem>(spawnParticle);
                tpar.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);
                tpar.transform.position = this.transform.position;
                tpar.Simulate(0.0f);
                tpar.Play();
            }*/
            // if (healthBar)
            //     healthBar.bOpponent = opponentAgent;
        }
        /// <summary>
@@ -542,7 +530,6 @@
            // 需要设置移动的目标Node.
            m_NextNode = m_CurrentNode.GetNextNode();
            this.MoveToNode();
        }
@@ -786,22 +773,6 @@
            if (!m_CurrentNode) return;
            Node nextNode = m_CurrentNode.GetNextNode();
            if (!nextNode) return;
            /*            if (m_CurrentNode.transform.position.z > nextNode.transform.position.z)
                            this.m_PositiveZ = false;
                        else
                            this.m_PositiveZ = true;
                        m_ZMaxValue = nextNode.transform.position.z;
                        Node thirdNode = nextNode.GetNextNode();
                        if (!thirdNode) return;
                        if (thirdNode.transform.position.x > nextNode.transform.position.x)
                            this.m_PositiveX = true;
                        else
                        {
                            this.m_PositiveX = false;
                        }
                        m_XMaxValue = thirdNode.transform.position.x;*/
        }
        /// <summary>
Assets/Scripts/TowerDefense/Input/TowerDefenseKeyboardMouseInput.cs
@@ -192,7 +192,7 @@
                            // 开启相应的兵线:
                            Tower tw = m_GameUI.FindTowerWithGridIdx(m_GameUI.currentGrid.x, m_GameUI.currentGrid.y);
                            if ((tw != null) && (tw.bInAttackMode))
                                LevelManager.instance.startWaveLine(m_GameUI.currentGrid.x, false, tw.attributeId);
                                LevelManager.instance.startWaveLine(m_GameUI.currentGrid.x, false, tw.ElfId);
                        }
                    }
                    else // RMB cancels
Assets/Scripts/TowerDefense/Level/AgentInsManager.cs
@@ -918,7 +918,7 @@
            {
                tower = EndlessGameUI.instance.FindTowerWithGridIdx(i, j);
                if (!tower || !tower.gameObject.activeInHierarchy || tower.attributeId != 109) continue;
                if (!tower || !tower.gameObject.activeInHierarchy || tower.ElfId != 301) continue;
                if (tower.IsWoodCharge)
                {
Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuff.cs
@@ -53,9 +53,9 @@
                    if (gemId == 101)
                        attributeId = 1;
                    else if (gemId == 105)
                    else if (gemId == 201)
                        attributeId = 2;
                    else if (gemId == 109)
                    else if (gemId == 301)
                        attributeId = 3;
                    isEffective = attributeId == buffData.Config.target_type[1];
                    break;
Assets/Scripts/TowerDefense/Opponent/OpponentMgr.cs
@@ -1,5 +1,4 @@
using System.Collections;
using System.Collections.Generic;
using System.Collections.Generic;
using UnityEngine;
using Core.Utilities;
using TowerDefense.Towers.Placement;
@@ -9,6 +8,7 @@
using TowerDefense.Towers;
using TowerDefense.UI.HUD;
using TowerDefense.Agents;
using KTGMGemClient;
/// <summary>
/// 对战管理器,主要负责屏幕上方的敌方数据结构和相关的显示展示
@@ -310,21 +310,20 @@
        if (index == -1) return;
        Tower tower = canReleaseSkillsQueue.Dequeue();
        int attributeId = tower.attributeId;
        int level = tower.currentLevel;
        if (tower.towerFeature == EFeatureTower.Skill_Fire)
        {
            // 火,列攻击,直接在该兵线释放
            WaveLineOpponentManager.instance.PlayWaveLineEffect(index);
            AgentInsManager.instance.ExecWavelineAttack(index, attributeId, level, true);
            AgentInsManager.instance.ExecWavelineAttack(index, tower.ElfId, level, true);
        }
        else if (tower.towerFeature == EFeatureTower.Skill_Bomb)
        {
            // 控制,技能中心为离塔最近的小怪的中心点
            Agent agent = AgentInsManager.instance.GetMinDisAgent(index, true);
            WaveLineOpponentManager.instance.PlayBattleAreaBombEffect(agent.transform.position);
            AgentInsManager.instance.ExecBombAttack(agent.transform.position, attributeId, level, true);
            AgentInsManager.instance.ExecBombAttack(agent.transform.position, tower.ElfId, level, true);
        }
    }
@@ -421,7 +420,7 @@
            Tower tower = this.getTower(ti, 0);
            if (!tower) continue;
            int lvl = tower.currentLevel;
            if (lvl >= Tower.MAX_LEVEL)
            if (lvl >= ElfUpgradeData.MaxTowerLevel)
                continue;
            if ((agentNum - 1) <= lvl) continue;
Assets/Scripts/TowerDefense/Towers/Projectiles/BallisticAttack.cs
@@ -17,11 +17,6 @@
        public float chainAttackRate = 0;
        /// <summary>
        /// 当前攻击塔位对应的属性ID
        /// </summary>
        public int attributeId = 0;
        /// <summary>
        /// The Damager attached to the object
        /// </summary>
        protected Damager damager;
@@ -31,11 +26,6 @@
        /// </summary>
        public float attackRise { get; set; }
        /// <summary>
        /// 基础增加暴击伤害率
        /// </summary>
        private float baseCritDamageRate = 0.5f;
        public Tower TowerPtr;
        /// <summary>
@@ -43,7 +33,7 @@
        /// </summary>
        /// <param name="enemy"></param>
        /// <param name="attributeId">子弹的属性id</param>
        public void DealDamage(Targetable enemy, int attributeId = -1, bool isEnhancedBullet = false)
        public void DealDamage(Targetable enemy, bool isEnhancedBullet = false)
        {
            switch ((enemy as Agent).AgentType)
            {
@@ -54,7 +44,7 @@
                    HandleBubbleBomb(enemy);
                    break;
                case SpawnAgentType.WoodPile:
                    HandleWoodPile(enemy, attributeId);
                    HandleWoodPile(enemy);
                    break;
            }
        }
@@ -63,19 +53,19 @@
        /// 处理木桩墙壁收到的伤害
        /// </summary>
        /// <param name="enemy"></param>
        private void HandleWoodPile(Targetable enemy, int id)
        private void HandleWoodPile(Targetable enemy)
        {
            float finalDamage = damager.finalDamage;
            float basicDamage = ElfInfoData.GetBasicDamage(TowerPtr.ElfId, TowerPtr.currentLevel);
            if (id == 10101)
                finalDamage *= (enemy as WoodPileAgent).FireHurtRate;
            if (TowerPtr.ElfId == 101)
                basicDamage *= (enemy as WoodPileAgent).FireHurtRate;
            int tid = enemy.liveID;
            Vector3 backPos = enemy.position;
            // 这里也可以把碰撞点传进来
            enemy.TakeDamage(finalDamage, enemy.position, damager.alignmentProvider);
            EndlessGameUI.instance.generateBloodText(backPos, finalDamage);
            enemy.TakeDamage(basicDamage, enemy.position, damager.alignmentProvider);
            EndlessGameUI.instance.generateBloodText(backPos, basicDamage);
        }
        /// <summary>
@@ -94,11 +84,17 @@
        /// <returns></returns>
        private bool IsCrit()
        {
            elf_info info = ElfInfoData.GetDataById(TowerPtr.ElfId);
            float crit = 0f;
            if (info != null)
                crit = info.b_crit / 1000f;
            CritProbabilityAdd critProbabilityAdd = (CritProbabilityAdd)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.CritProbabilityAdd);
            if (critProbabilityAdd == null) return false;
            if (critProbabilityAdd != null)
                crit = critProbabilityAdd.GetCrit(TowerPtr.ElfId, crit);
            float crit = critProbabilityAdd.GetCrit(TowerPtr.attributeId);
            float random = UnityEngine.Random.Range(0, 1f);
            return random <= crit;
@@ -112,7 +108,7 @@
        {
            CritDamageAdd critDamageAdd = (CritDamageAdd)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.CritDamageAdd);
            return critDamageAdd == null ? 0 : critDamageAdd.GetCritDamageRate(TowerPtr.attributeId);
            return critDamageAdd == null ? 0 : critDamageAdd.GetCritDamageRate(TowerPtr.ElfId);
        }
        /// <summary>
@@ -121,26 +117,32 @@
        /// <param name="enemy"></param>
        private void HandleNormal(Targetable enemy, bool isEnhancedBullet)
        {
            float finalDamage = damager.finalDamage;
            bool crit = IsCrit();
            // 基础伤害 = elf_info 基础攻击力 * elf_upgrade 攻击比率 / 1000f
            float basicDamage = ElfInfoData.GetBasicDamage(TowerPtr.ElfId, TowerPtr.currentLevel);
            elf_info info = ElfInfoData.GetDataById(TowerPtr.ElfId);
            // 处理PVE无尽模式,buff增加的伤害
            finalDamage += ProcessEndlessBuffAttack(finalDamage);
            basicDamage += ProcessEndlessBuffAttack(basicDamage);
            bool crit = IsCrit();
            if (crit)
                finalDamage *= 1 + baseCritDamageRate + GetCritDamageRate();
            {
                float basicCritDamageRate = info != null ? info.b_critdmg / 1000f : 0f;
                basicDamage *= 1 + basicCritDamageRate + GetCritDamageRate();
            }
            int deathCount = 0;
            // 提前处理非当前Enemy的爆炸攻击:
            if (chainAttackRate > 0)
                deathCount = AgentInsManager.instance.StartExplodeAttack((Agent)enemy, finalDamage);
                deathCount = AgentInsManager.instance.StartExplodeAttack((Agent)enemy, basicDamage);
            int tid = enemy.liveID;
            Vector3 backPos = enemy.position;
            // 这里也可以把碰撞点传进来
            enemy.TakeDamage(finalDamage, enemy.position, damager.alignmentProvider, 0);
            enemy.TakeDamage(basicDamage, enemy.position, damager.alignmentProvider, 0);
            if (chainAttackRate > 0)
            {
@@ -151,14 +153,14 @@
            }
            // 处理塔位的技能攻击:
            ProcessTowerAttributeAttack(enemy, finalDamage, attributeId);
            ProcessTowerAttributeAttack(enemy, basicDamage, TowerPtr.ElfId);
            if (!enemy.opponentAgent)
            {
                if (GameUI.instanceExists)
                    GameUI.instance.generateBloodText(backPos, finalDamage, crit);
                    GameUI.instance.generateBloodText(backPos, basicDamage, crit);
                else if (EndlessGameUI.instanceExists)
                    EndlessGameUI.instance.generateBloodText(backPos, finalDamage, crit);
                    EndlessGameUI.instance.generateBloodText(backPos, basicDamage, crit);
            }
            // 播放受击动画:
@@ -181,7 +183,7 @@
            // 非无尽模式
            if (!EndlessBuffManager.instanceExists) return 0;
            List<EndlessBuffConfig> list = EndlessBuffManager.instance.GetBuffListByEffectType(EndlessBuffEffectType.AttackAdd, attributeId);
            List<EndlessBuffConfig> list = EndlessBuffManager.instance.GetBuffListByEffectType(EndlessBuffEffectType.AttackAdd, TowerPtr.ElfId);
            if (list.Count == 0) return 0;
@@ -209,7 +211,7 @@
            {
                case 2:  // 减速.
                    SlowDown slowDown = (SlowDown)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.SlowDown);
                    (enemy as Agent).addSpeedSlowRate(0.15f + (slowDown != null ? slowDown.GetSlowDownAdd(TowerPtr.attributeId) : 0));
                    (enemy as Agent).addSpeedSlowRate(0.15f + (slowDown != null ? slowDown.GetSlowDownAdd(TowerPtr.ElfId) : 0));
                    break;
                case 3:  // 中毒
                    // enemy.poisonAgent(damage, attid);
Assets/Scripts/TowerDefense/Towers/Tower.cs
@@ -36,8 +36,6 @@
    /// </summary>
    public class Tower : Targetable
    {
        public static readonly int MAX_LEVEL = 4;
        /// <summary>
        /// A generalised name common to a levels
        /// </summary>
@@ -52,13 +50,6 @@
        /// 是否是特色骰子,如果是,则选择一个Enum类型。
        /// </summary>
        public EFeatureTower towerFeature = EFeatureTower.NULL;
        /// <summary>
        /// 当前塔防对应的MonsterMaterial,自身和对方显示不同的Mat.
        /// </summary>
        public Material materialMonsterSelf;
        public Material materialMonsterOppo;
        /// <summary>
        /// 塔防对应的充能状态.
@@ -77,17 +68,15 @@
        /// <summary>
        /// The tower levels associated with this tower
        /// </summary>
        public TowerLevel[] levels;
        [SerializeField]
        private TowerLevel towerLevel;
        public TowerLevel CurrentTowerLevel { get; private set; }
        /// <summary>
        /// 当前塔防对应的AttributeID.
        /// 精灵id,一一对应 elf_info表中的id,唯一的区分每一种精灵塔
        /// </summary>
        public int attributeId;
        /// <summary>
        /// 当前的Tower在游戏内UI界面上用到的Image数据,再以后应该是直接在表格内配置才合适
        /// </summary>
        public Sprite uiImage;
        public int ElfId;
        /// <summary>
        /// The physics mask the tower searches on
@@ -100,16 +89,6 @@
        public int currentLevel { get; protected set; }
        protected bool m_bInAttackMode = false;
        /// <summary>
        /// 精英怪和Boss双倍伤害.
        /// </summary>
        public bool bDoubleHitElit = false;
        /// <summary>
        /// Reference to the data of the current level
        /// </summary>
        public TowerLevel currentTowerLevel { get; protected set; }
        /// <summary>
        /// 攻击增加
@@ -135,14 +114,6 @@
        /// </summary>
        public Agent WoodAimAgent;
        /// <summary>
        /// 塔防数据的局内升级
        /// </summary>
        public int inSceneTowerLevel
        {
            get; set;
        }
        public int uiProOffset
        {
            get { return progressOffset; }
@@ -152,9 +123,9 @@
        /// <summary>
        /// Gets whether the tower can level up anymore
        /// </summary>
        public bool isAtMaxLevel
        public bool IsMaxLevel
        {
            get { return currentLevel == levels.Length - 1; }
            get { return currentLevel == ElfUpgradeData.MaxTowerLevel - 1; }
        }
        /// <summary>
@@ -219,25 +190,25 @@
            set
            {
                m_bInAttackMode = value;
                currentTowerLevel.SetAffectorState(m_bInAttackMode, gridPosition.x);
                currentTowerLevel.SetAttackState(value);
                CurrentTowerLevel.SetAffectorState(m_bInAttackMode, gridPosition.x);
                CurrentTowerLevel.SetAttackState(value);
                if (value)
                {
                    if (opponentSide)
                    {
                        OpponentMgr.instance.SetTowerAttID(gridPosition.x, attributeId, currentLevel);
                        OpponentMgr.instance.SetTowerAttID(gridPosition.x, ElfId, currentLevel);
                    }
                    else
                    {
                        if (LevelManager.instanceExists)
                        {
                            LevelManager.instance.SetTowerAttID(gridPosition.x, attributeId, currentLevel);
                            LevelManager.instance.SetTowerAttID(gridPosition.x, ElfId, currentLevel);
                            WaveLineSelMgr.instance.attackTowerFixed(gridPosition.x);
                        }
                        else if (EndlessLevelManager.instanceExists)
                        {
                            EndlessLevelManager.instance.SetTowerAttID(gridPosition.x, attributeId, currentLevel);
                            EndlessLevelManager.instance.SetTowerAttID(gridPosition.x, ElfId, currentLevel);
                            EndlessWaveLineManager.instance.AttackTowerFixed(gridPosition.x, PlayWaveLineFlash);
                        }
                    }
@@ -439,16 +410,10 @@
        /// </summary>
        public void upGradeInSceneTL()
        {
            inSceneTowerLevel++;
            // cx test
            // 设置攻击数据的加强,暂时是测试数据,后面需要读取表格数据处理:
            float damageAdd = inSceneTowerLevel;
            Debug.Log("Upgrade Tower name is:" + name);
            // 播放相关的特效
            currentTowerLevel.PlayUpGradeEffect();
            CurrentTowerLevel.PlayUpGradeEffect();
        }
        /// <summary>
@@ -456,7 +421,7 @@
        /// </summary>
        public TowerPlacementGhost towerGhostPrefab
        {
            get { return levels[currentLevel].towerGhostPrefab; }
            get { return towerLevel.towerGhostPrefab; }
        }
        /// <summary>
@@ -535,13 +500,13 @@
            // Invoke base kill method
            Kill();
        }
        /// <summary>
        /// Used to (try to) upgrade the tower data
        /// </summary>
        public virtual bool UpgradeTower()
        {
            if (isAtMaxLevel)
            if (IsMaxLevel)
            {
                return false;
            }
@@ -576,10 +541,8 @@
        /// </returns>
        public virtual bool UpgradeTowerToLevel(int level)
        {
            if (level < 0 || isAtMaxLevel || level >= levels.Length)
            {
                return false;
            }
            if (level < 0 || IsMaxLevel || level >= ElfUpgradeData.MaxTowerLevel) return false;
            SetLevel(level);
            return true;
        }
@@ -616,23 +579,19 @@
        /// <summary>
        /// Cache and update oftenly used data
        /// </summary>
        public void SetLevel(int level)
        protected void SetLevel(int level)
        {
            if (level < 0 || level >= levels.Length)
            {
                return;
            }
            if (level < 0 || level >= ElfUpgradeData.MaxTowerLevel) return;
            currentLevel = level;
            if (currentTowerLevel != null)
            {
                Destroy(currentTowerLevel.gameObject);
            }
            // instantiate the visual representation
            currentTowerLevel = Instantiate(levels[currentLevel], transform);
            // cx test 不需要删除,直接刷新等级显示还有body的显示即可
            if (CurrentTowerLevel != null)
                Destroy(CurrentTowerLevel.gameObject);
            // initialize TowerLevel
            currentTowerLevel.Initialize(this, enemyLayerMask, configuration.alignmentProvider);
            CurrentTowerLevel = Instantiate(towerLevel, transform);
            CurrentTowerLevel.Initialize(this, enemyLayerMask, configuration.alignmentProvider);
            CurrentTowerLevel.SetShowLevel(level + 1);
            // disable affectors
            LevelState levelState = LevelState.Intro;
@@ -642,7 +601,7 @@
                levelState = EndlessLevelManager.instance.EndlessLeveltate;
            bool initialise = levelState == LevelState.AllEnemiesSpawned || levelState == LevelState.SpawningEnemies;
            initialise = false;
            currentTowerLevel.SetAffectorState(initialise, gridPosition.x);
            CurrentTowerLevel.SetAffectorState(initialise, gridPosition.x);
        }
        /// <summary>
@@ -652,8 +611,7 @@
        {
            bool initialise = current == LevelState.AllEnemiesSpawned || current == LevelState.SpawningEnemies;
            initialise = false;
            //currentTowerLevel.SetAffectorState(initialise);
            currentTowerLevel.SetAffectorState(bInAttackMode, gridPosition.x);
            CurrentTowerLevel.SetAffectorState(bInAttackMode, gridPosition.x);
        }
    }
}
Assets/Scripts/TowerDefense/Towers/TowerLaunchers/BallisticLauncher.cs
@@ -11,11 +11,6 @@
    public class BallisticLauncher : Launcher
    {
        /// <summary>
        /// The particle system used for providing launch feedback
        /// </summary>
        public GameObject fireParticleObj;
        /// <summary>
        /// Launches a single projectile at a single enemy from a single firing point
        /// </summary>
        /// <param name="enemy">
@@ -38,16 +33,6 @@
                return;
            }
            ballisticProjectile.FireAtPoint(startPosition, enemy.position);
            // 先不适用炮口特效了
            // if (fireParticleObj != null)
            // {
            //     GameObject psObj = Poolable.TryGetPoolable(fireParticleObj);
            //     ParticleSystem ps = psObj.GetComponent<ParticleSystem>();
            //     if (ps == null)
            //         ps = psObj.transform.GetChild(0).GetComponent<ParticleSystem>();
            //     PlayParticles(ps, startPosition, enemy.position);
            // }
        }
    }
}
Assets/Scripts/TowerDefense/Towers/TowerLaunchers/HitscanLauncher.cs
@@ -91,7 +91,7 @@
            float delayAttack = 0.0f;
            if (aaf)
            {
                float attackRate = aaf.FireRate;
                float attackRate = aaf.towerLevel.GetFireRate();
                if (attackRate > 0)
                    delayAttack = 1.0f / attackRate;
            }
Assets/Scripts/TowerDefense/Towers/TowerLaunchers/Launcher.cs
@@ -2,6 +2,7 @@
using ActionGameFramework.Health;
using Core.Utilities;
using UnityEngine;
using TowerDefense.Towers.Projectiles;
namespace TowerDefense.Towers.TowerLaunchers
{
@@ -32,6 +33,7 @@
            int currentFiringPointIndex = 0;
            int firingPointLength = firingPoints.Length;
            count = count > maxAttack ? maxAttack : count;
            for (int i = 0; i < count; i++)
            {
                Targetable enemy = enemies[i];
@@ -75,7 +77,6 @@
                return;
            }
            //
            // 此处设置局内升级数据对应的攻击数据:
            Damager tm = poolable.gameObject.GetComponent<Damager>();
            if (tm)
@@ -84,12 +85,12 @@
                Damager srctm = attack.GetComponent<Damager>();
                tm.inSceneUpGradeDamage = srctm.inSceneUpGradeDamage;
                tm.doubleHit = srctm.doubleHit;
                BallisticAttack ballisticAttack = poolable.gameObject.GetComponent<BallisticAttack>();
                ballisticAttack.TowerPtr = attack.GetComponent<Damager>().TowerPtr;
                //
                // 最后一颗子弹的多倍伤害.
                tm.damageMulti = srctm.damageMulti;
                srctm.damageMulti = 1.0f;
                //Debug.Log("源始局内升级数据是:" + srctm.inSceneUpGradeDamage);
            }
            // WORK START: 从  Pool 内获取数据的时候,就把原来的数据清除掉了.
            Launch(enemy, poolable.gameObject, firingPoints[0]); //GetRandomTransform(firingPoints));
Assets/Scripts/TowerDefense/Towers/TowerLevel.cs
@@ -2,9 +2,9 @@
using Core.Health;
using KTGMGemClient;
using TowerDefense.Affectors;
using TowerDefense.Towers.Data;
using TowerDefense.UI.HUD;
using UnityEngine;
using TMPro;
namespace TowerDefense.Towers
{
@@ -27,17 +27,12 @@
        /// <summary>
        /// The parent tower controller of this tower
        /// </summary>
        protected Tower m_ParentTower;
        public Tower ParentTower { get; protected set; }
        /// <summary>
        /// The list of effects attached to the tower
        /// </summary>
        Affector[] m_Affectors;
        /// <summary>
        /// TEST CODE: 是否已经缩放.
        /// </summary>
        protected bool bScaleForCombat = false;
        /// <summary>
        /// 未上阵的形象
@@ -65,6 +60,13 @@
        /// 动作动画器
        /// </summary>
        public Animator ActionAnimator;
        public TextMeshPro LevelText;
        /// <summary>
        /// 精灵初始配置数据
        /// </summary>
        public elf_info ElfInfo { get; protected set; }
        /// <summary>
        /// 发射子弹速率
@@ -137,10 +139,18 @@
                effect.towerPtr = tower;
                AttackAffector attackAffector = effect.GetComponent<AttackAffector>();
            }
            m_ParentTower = tower;
            Transform starTs = transform.Find("Star");
            starTs.localPosition = new Vector3(0, 0.2f, 0.6f);
            starTs.localRotation = Quaternion.Euler(60, 180, 0);
            ParentTower = tower;
            ElfInfo = ElfInfoData.GetDataById(tower.ElfId);
        }
        /// <summary>
        /// 设置显示等级
        /// </summary>
        /// <param name="level">从1开始</param>
        public void SetShowLevel(int level)
        {
            LevelText.text = $"{level}";
        }
        private void Awake()
@@ -163,9 +173,7 @@
                        actionTimeArr[1] = clips[i].length;
                }
                GameObject affectorObj = transform.Find("Affector").gameObject;
                AttackAffector attackAffector = affectorObj.GetComponent<AttackAffector>();
                fireRate = attackAffector.FireRate;
                fireRate = GetFireRate();
                if (actionTimeArr[1] > 1 / fireRate)
                {
@@ -174,6 +182,19 @@
                }
                SetAttackState(false);
            }
        }
        /// <summary>
        /// 获取发射速率
        /// </summary>
        /// <returns></returns>
        public float GetFireRate()
        {
            DecreaseTowerAttackCD endlessBuff = (DecreaseTowerAttackCD)EndlessBuffManager.instance.GetBuffInstanceByType(EndlessBuffEffectType.DecreaseTowerAttackCD);
            float fireRate = endlessBuff != null ? endlessBuff.GetDecreaseCD(ParentTower.ElfId, 1 / ElfInfo.b_atkf) : 1 / ElfInfo.b_atkf;
            // 限制最大速度为 每0.1s发射一次
            return Mathf.Max(fireRate, 0.1f);
        }
        public void LateUpdate()
@@ -195,7 +216,7 @@
            if (canPlaceMesh.enabled != isOn)
                canPlaceMesh.enabled = isOn;
        }
        public void ChangeState(TowerActionState state)
        {
            if (ActionAnimator == null || !ActionAnimator.isActiveAndEnabled) return;
@@ -248,27 +269,9 @@
            return visualizers;
        }
        /// <summary>
        /// Returns the dps of the tower
        /// </summary>
        /// <returns>The dps of the tower</returns>
        public float GetTowerDps()
        {
            float dps = 0;
            foreach (Affector affector in Affectors)
            {
                var attack = affector as AttackAffector;
                if (attack != null && attack.damagerProjectile != null)
                {
                    dps += attack.GetProjectileDamage() * attack.FireRate;
                }
            }
            return dps;
        }
        public void Kill()
        {
            m_ParentTower.KillTower();
            ParentTower.KillTower();
        }
        public void OnBeforeSerialize()
@@ -278,7 +281,7 @@
        /// <summary>
        /// 获取当前TowerLevel对应的AttackRise.
        /// /// </summary>
        public float attackRise { get { return m_ParentTower.attackRise; } }
        public float attackRise { get { return ParentTower.attackRise; } }
        public void OnAfterDeserialize()
        {
Assets/Scripts/TowerDefense/UI/EndGameScreen.cs
@@ -130,8 +130,6 @@
            TowerPlacementGrid.GRID_OPENCASH_SELF = 100;
            // 关键数据需要重置: 
            // 1: 局内升级相关的数据
            SceneTowerLvl.clearInSceneTowerData();
            // 2: GameUI需要清空.
            GameUI.instance.restartLevel();
            // 3: AgentInsManager需要重来.
Assets/Scripts/TowerDefense/UI/EndlessBuffPreview.cs
@@ -49,6 +49,8 @@
        private void Refresh()
        {
            if (!Panel.activeInHierarchy) return;
            ClearContent();
            List<EndlessBuffConfig> buffList = EndlessBuffManager.instance.BuffList;
@@ -88,8 +90,8 @@
        {
            preTimeScale = Time.timeScale;
            Time.timeScale = 0;
            Refresh();
            Panel.SetActive(true);
            Refresh();
        }
        private void HideBuffPreview()
Assets/Scripts/TowerDefense/UI/GM.cs
@@ -1,8 +1,8 @@
using UnityEngine;
using TowerDefense.Level;
using TowerDefense.Towers;
using TowerDefense.UI.HUD;
using UnityEngine.UI;
using TowerDefense.UI.HUD;
/**
 * GM
@@ -17,17 +17,17 @@
        public Text RandomText;
        public ToggleGroup WoodToggleGroup;
        public Toggle WoodToggle;
        private int woodSelectedIndex;
        public InputField WoodInput;
        public ToggleGroup FireToggleGroup;
        public Toggle WaterToggle;
        private int fireSelectedIndex;
        public InputField WaterInput;
        public ToggleGroup WaterToggleGroup;
        public Toggle FireToggle;
        private int waterSelectedIndex;
        public InputField FireInput;
        public Toggle InfiniteSkillToggle;
@@ -40,36 +40,9 @@
                 GameConfig.InfiniteSkill = select;
                 if (select)
                    EndlessUIStart.instance.GuideEnergyUp(200);
                     EndlessUIStart.instance.GuideEnergyUp(200);
             });
            InfiniteSkillToggle.isOn = GameConfig.InfiniteSkill;
        }
        public void OnClickWood(int index)
        {
            GameObject child = WoodToggleGroup.transform.GetChild(index).gameObject;
            Toggle toggle = child.GetComponent<Toggle>();
            if (toggle.isOn)
                woodSelectedIndex = index;
        }
        public void OnClickFire(int index)
        {
            GameObject child = FireToggleGroup.transform.GetChild(index).gameObject;
            Toggle toggle = child.GetComponent<Toggle>();
            if (toggle.isOn)
                fireSelectedIndex = index;
        }
        public void OnClickWater(int index)
        {
            GameObject child = WaterToggleGroup.transform.GetChild(index).gameObject;
            Toggle toggle = child.GetComponent<Toggle>();
            if (toggle.isOn)
                waterSelectedIndex = index;
        }
        /// <summary>
@@ -101,7 +74,7 @@
            Tower aTower = EndlessRandomTower.instance.getTowerByName("CopyCatTower");
            int level = 0;
            if (waterSelectedIndex == 0)
            if (WaterToggle.isOn)
            {
                if (EndlessUIStart.instance.GameStartTime >= JsonDataCenter.DOUBLE_GEM_TIME)
                {
@@ -109,7 +82,11 @@
                }
            }
            else
                level = waterSelectedIndex - 1;
            {
                int result = 0;
                int.TryParse(WoodInput.text, out result);
                level = Mathf.Clamp(result - 1, 0, ElfUpgradeData.MaxTowerLevel - 1);
            }
            EndlessRandomTower.instance.RandomPlaceTower(aTower, level, 0);
        }
@@ -122,7 +99,7 @@
            Tower aTower = EndlessRandomTower.instance.getTowerByName("GrowUpTower");
            int level = 0;
            if (fireSelectedIndex == 0)
            if (FireToggle.isOn)
            {
                if (EndlessUIStart.instance.GameStartTime >= JsonDataCenter.DOUBLE_GEM_TIME)
                {
@@ -130,7 +107,11 @@
                }
            }
            else
                level = waterSelectedIndex - 1;
            {
                int result = 0;
                int.TryParse(WoodInput.text, out result);
                level = Mathf.Clamp(result - 1, 0, ElfUpgradeData.MaxTowerLevel - 1);
            }
            EndlessRandomTower.instance.RandomPlaceTower(aTower, level, 0);
        }
@@ -143,7 +124,7 @@
            Tower aTower = EndlessRandomTower.instance.getTowerByName("BlinkTower");
            int level = 0;
            if (woodSelectedIndex == 0)
            if (WoodToggle.isOn)
            {
                if (EndlessUIStart.instance.GameStartTime >= JsonDataCenter.DOUBLE_GEM_TIME)
                {
@@ -151,7 +132,11 @@
                }
            }
            else
                level = woodSelectedIndex - 1;
            {
                int result = 0;
                int.TryParse(WoodInput.text, out result);
                level = Mathf.Clamp(result - 1, 0, ElfUpgradeData.MaxTowerLevel - 1);
            }
            EndlessRandomTower.instance.RandomPlaceTower(aTower, level, 0);
        }
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -585,7 +585,7 @@
            SetToDragMode(newT);
            if (towerOld.towerFeature == EFeatureTower.Skill_Bomb)
                m_CurrentTower.SetAttackArea(dragTowerLevel, towerOld.attributeId);
                m_CurrentTower.SetAttackArea(dragTowerLevel, towerOld.ElfId);
        }
        /// <summary>
@@ -673,7 +673,7 @@
            if (!m_CurrentTower || !IsGhostAtValidPosition())
            {
                // 最大级别的Tower不能再合并了.
                if (towerToMove.isAtMaxLevel)
                if (towerToMove.IsMaxLevel)
                    return false;
                // 判断格子上的塔防:
@@ -1004,14 +1004,14 @@
                                if (bInAttackModeTower == null)
                                {
                                    bInAttackModeTower = checkTowerPlaceTower;
                                    bInAttackModeTower.currentTowerLevel.SetCanPlace(true);
                                    bInAttackModeTower.CurrentTowerLevel.SetCanPlace(true);
                                }
                                else if (bInAttackModeTower != checkTowerPlaceTower)
                                {
                                    bInAttackModeTower.currentTowerLevel.SetCanPlace(false);
                                    bInAttackModeTower.CurrentTowerLevel.SetCanPlace(false);
                                    bInAttackModeTower = checkTowerPlaceTower;
                                    bInAttackModeTower.currentTowerLevel.SetCanPlace(true);
                                    bInAttackModeTower.CurrentTowerLevel.SetCanPlace(true);
                                }
                            }
@@ -1023,14 +1023,14 @@
                        if (bInAttackModeTower == null)
                        {
                            bInAttackModeTower = checkTowerPlaceTower;
                            bInAttackModeTower.currentTowerLevel.SetCanPlace(true);
                            bInAttackModeTower.CurrentTowerLevel.SetCanPlace(true);
                        }
                        else if (bInAttackModeTower != checkTowerPlaceTower)
                        {
                            bInAttackModeTower.currentTowerLevel.SetCanPlace(false);
                            bInAttackModeTower.CurrentTowerLevel.SetCanPlace(false);
                            bInAttackModeTower = checkTowerPlaceTower;
                            bInAttackModeTower.currentTowerLevel.SetCanPlace(true);
                            bInAttackModeTower.CurrentTowerLevel.SetCanPlace(true);
                        }
                    }
                }
@@ -1069,7 +1069,7 @@
            dragTowerPlacement.CloseCanPlace();
            if (bInAttackModeTower != null)
            {
                bInAttackModeTower.currentTowerLevel.SetCanPlace(false);
                bInAttackModeTower.CurrentTowerLevel.SetCanPlace(false);
                bInAttackModeTower = null;
            }
        }
@@ -1289,8 +1289,7 @@
            Tower controller = currentTower.controller;
            Tower createdTower = Instantiate(controller);
            createdTower.PlayWaveLineFlash = playEffect;
            createdTower.Initialize(m_CurrentArea, pos);
            createdTower.SetLevel(level - 1);
            createdTower.Initialize(m_CurrentArea, pos, level - 1);
            if (playEffect)
                PlayUpgradeEffect(createdTower);
@@ -1319,7 +1318,7 @@
                ray = m_Camera.ScreenPointToRay(tp.currentPosition)
            };
            int sId = towerToMove.attributeId;
            int sId = towerToMove.ElfId;
            int sLevel = towerToMove.currentLevel;
            // 火是列攻击:
@@ -1520,7 +1519,7 @@
            {
                throw new InvalidOperationException("Selected Tower is null");
            }
            if (currentSelectedTower.isAtMaxLevel)
            if (currentSelectedTower.IsMaxLevel)
            {
                return;
            }
@@ -1541,7 +1540,7 @@
            {
                throw new InvalidOperationException("Selected Tower is null");
            }
            if (currentSelectedTower.isAtMaxLevel)
            if (currentSelectedTower.IsMaxLevel)
                return false;
            // 直接随机升级,零成本。
@@ -1678,7 +1677,7 @@
        /// <param name="worldPos"></param>
        public void PlayUpgradeEffect(Tower newTower)
        {
            newTower.currentTowerLevel.PlayUpGradeEffect();
            newTower.CurrentTowerLevel.PlayUpGradeEffect();
        }
        /// <summary>
@@ -2279,22 +2278,6 @@
        }
        /// <summary>
        /// 战场内所有的Tower实例都需要升级相关的数据.
        /// 找到相同类型的所有Tower,然后进行局内升级的修改。
        /// </summary>
        /// <param name="td"></param>
        protected void towerUpgradeInBattle(TowerLevelUp tlu)
        {
            foreach (Tower tower in m_listTower)
            {
                if (tlu.towerName != tower.towerName)
                    continue;
                tower.upGradeInSceneTL();
            }
            return;
        }
        /// <summary>
        /// Reset TimeScale if game is paused
        /// </summary>
        protected override void OnDestroy()
@@ -2527,12 +2510,11 @@
                    // Place the ghost
                    Tower controller = m_CurrentTower.controller;
                    Tower createdTower = Instantiate(controller);
                    createdTower.Initialize(m_CurrentArea, m_GridPosition);
                    createdTower.SetLevel(dragTowerLevel);
                    createdTower.Initialize(m_CurrentArea, m_GridPosition, dragTowerLevel);
                    // ATTENTION TO FIX:是否应该加入List:
                    addTower(createdTower);
                    PlayToAttackEffect(createdTower.attributeId, createdTower.transform.position);
                    PlayToAttackEffect(createdTower.ElfId, createdTower.transform.position);
                    dragTowerLevel = 0;
                    CancelGhostPlacement();
                }
@@ -2542,11 +2524,11 @@
        /// <summary>
        /// 播放宝石上阵特效
        /// </summary>
        /// <param name="attributeId">101 火,105 水,109 木</param>
        /// <param name="ElfId">101 火,201 水,301 木</param>
        /// <param name="worldPos">世界坐标</param>
        public void PlayToAttackEffect(int attributeId, Vector3 worldPos)
        public void PlayToAttackEffect(int ElfId, Vector3 worldPos)
        {
            string path = $"UI/DengChang_{attributeId}";
            string path = $"UI/DengChang_{ElfId}";
            GameObject prefab = Resources.Load<GameObject>(path);
            GameObject obj = Instantiate(prefab);
Assets/Scripts/TowerDefense/UI/HUD/GameUI.cs
@@ -103,11 +103,6 @@
        public State state { get; private set; }
        /// <summary>
        /// 局内塔防类型的升级数据
        /// </summary>
        public List<SceneTowerLvl> sceneTowerLvlList;
        /// <summary>
        /// The currently selected tower
        /// </summary>
        public LayerMask placementAreaMask;
@@ -619,7 +614,7 @@
            SetToDragMode(newT);
            if (towerOld.towerFeature == EFeatureTower.Skill_Bomb)
                m_CurrentTower.SetAttackArea(dragTowerLevel, towerOld.attributeId);
                m_CurrentTower.SetAttackArea(dragTowerLevel, towerOld.ElfId);
        }
        /// <summary>
@@ -703,7 +698,7 @@
            if (m_CurrentTower == null || !IsGhostAtValidPosition())
            {
                // 最大级别的Tower不能再合并了.
                if (towerToMove.isAtMaxLevel)
                if (towerToMove.IsMaxLevel)
                    return false;
                // 判断格子上的塔防:
@@ -864,7 +859,7 @@
                Tower tw = FindTowerWithGridIdx(m_GridPosition.x, m_GridPosition.y);
                if (tw != null)
                {
                    LevelManager.instance.startWaveLine(m_GridPosition.x, false, tw.attributeId);
                    LevelManager.instance.startWaveLine(m_GridPosition.x, false, tw.ElfId);
                    // 顺便设置界面的进展
                    if (uiCtlProgresss > 0)
@@ -922,7 +917,7 @@
                ray = m_Camera.ScreenPointToRay(tp.currentPosition)
            };
            int sId = towerToMove.attributeId;
            int sId = towerToMove.ElfId;
            int sLevel = towerToMove.currentLevel;
            // 火是列攻击:
@@ -1146,7 +1141,7 @@
            {
                throw new InvalidOperationException("Selected Tower is null");
            }
            if (currentSelectedTower.isAtMaxLevel)
            if (currentSelectedTower.IsMaxLevel)
            {
                return;
            }
@@ -1167,7 +1162,7 @@
            {
                throw new InvalidOperationException("Selected Tower is null");
            }
            if (currentSelectedTower.isAtMaxLevel)
            if (currentSelectedTower.IsMaxLevel)
                return false;
            // 直接随机升级,零成本。
@@ -1309,7 +1304,7 @@
            if (newTower.towerFeature == EFeatureTower.NULL)
            {
                string path = $"UI/ToBattle_{newTower.attributeId}";
                string path = $"UI/ToBattle_{newTower.ElfId}";
                GameObject prefab = Resources.Load<GameObject>(path);
                effect = Instantiate(prefab);
            }
@@ -1645,7 +1640,7 @@
                if (lvl == 0)
                {
                    Tower tw = OpponentMgr.instance.getTower(tposx, tposy);
                    LevelManager.instance.startWaveLine(tposx, true, tw.attributeId);
                    LevelManager.instance.startWaveLine(tposx, true, tw.ElfId);
                }
            }
@@ -1943,22 +1938,6 @@
        }
        /// <summary>
        /// 战场内所有的Tower实例都需要升级相关的数据.
        /// 找到相同类型的所有Tower,然后进行局内升级的修改。
        /// </summary>
        /// <param name="td"></param>
        protected void towerUpgradeInBattle(TowerLevelUp tlu)
        {
            foreach (Tower tower in m_listTower)
            {
                if (tlu.towerName != tower.towerName)
                    continue;
                tower.upGradeInSceneTL();
            }
            return;
        }
        /// <summary>
        /// Reset TimeScale if game is paused
        /// </summary>
        protected override void OnDestroy()
@@ -2182,14 +2161,13 @@
                    Tower controller = m_CurrentTower.controller;
                    Tower createdTower = Instantiate(controller);
                    createdTower.Initialize(m_CurrentArea, m_GridPosition);
                    createdTower.SetLevel(dragTowerLevel);
                    createdTower.Initialize(m_CurrentArea, m_GridPosition, dragTowerLevel);
                    // ATTENTION TO FIX:是否应该加入List:
                    addTower(createdTower);
                    dragTowerLevel = 0;
                    CancelGhostPlacement();
                    PlayToAttackEffect(createdTower.attributeId, createdTower.transform.position);
                    PlayToAttackEffect(createdTower.ElfId, createdTower.transform.position);
                }
            }
        }
@@ -2197,11 +2175,11 @@
        /// <summary>
        /// 播放宝石上阵特效
        /// </summary>
        /// <param name="attributeId">101 火,105 水,109 木</param>
        /// <param name="ElfId">101 火,201 水,301 木</param>
        /// <param name="worldPos">世界坐标</param>
        public void PlayToAttackEffect(int attributeId, Vector3 worldPos)
        public void PlayToAttackEffect(int ElfId, Vector3 worldPos)
        {
            string path = $"UI/ToBattle_{attributeId}";
            string path = $"UI/ToBattle_{ElfId}";
            GameObject prefab = Resources.Load<GameObject>(path);
            GameObject obj = Instantiate(prefab);
            obj.transform.position = worldPos;
@@ -2272,26 +2250,6 @@
        }
        /// <summary>
        /// 更新每一个
        /// </summary>
        protected void updateSceneTowerUpgradeStatus()
        {
            bool zeroTower = m_listTower.Count == 0;
            int tlen = sceneTowerLvlList.Count;
            /*            for( int ti = 0;ti<tlen;ti ++)
                        {
                            SceneTowerLvl stl = sceneTowerLvlList[ti];
                            bool cashEnable = LevelManager.instance.currency.currentCurrency >= stl.upgradeCash;
                            if (zeroTower)
                                cashEnable = false;
                            if( cashEnable != stl.canInteract)
                            {
                                stl.enableSceneTower(cashEnable);
                            }
                        }*/
        }
        /// <summary>
        /// Modifies the valid rendering of the ghost tower once there is enough currency
        /// </summary>
        protected virtual void OnCurrencyChanged()
@@ -2308,10 +2266,6 @@
            var tpMgr = TowerPrice.instance;
            if (tpMgr.currentTowerPrice > LevelManager.instance.currency.currentCurrency)
                disableRandomTowerBtn();
            // 处理场景内升级相关的内容
            updateSceneTowerUpgradeStatus();
            if (!isBuilding || m_CurrentTower == null || m_CurrentArea == null)
            {
Assets/Scripts/TowerDefense/UI/HUD/SceneTowerLvl.cs
File was deleted
Assets/Scripts/TowerDefense/UI/HUD/TowerInfoDisplay.cs
@@ -1,4 +1,5 @@
using TowerDefense.Towers;
using KTGMGemClient;
using TowerDefense.Towers;
using UnityEngine;
using UnityEngine.UI;
@@ -68,13 +69,12 @@
        /// <param name="levelOfTower">The level of the tower</param>
        public void Show(Tower tower, int levelOfTower)
        {
            if (levelOfTower >= tower.levels.Length)
            if (levelOfTower >= ElfUpgradeData.MaxTowerLevel)
            {
                return;
            }
            TowerLevel towerLevel = tower.levels[levelOfTower];
            TowerLevel towerLevel = tower.CurrentTowerLevel;
            DisplayText(towerName, tower.towerName);
            DisplayText(dps, towerLevel.GetTowerDps().ToString("f2"));
            DisplayText(level, (levelOfTower + 1).ToString());
            DisplayText(dimensions, string.Format("{0}, {1}", tower.dimensions.x, tower.dimensions.y));
        }
Assets/Scripts/TowerDefense/UI/HUD/TowerSpawnButton.cs
@@ -8,150 +8,143 @@
namespace TowerDefense.UI.HUD
{
    /// <summary>
    /// A button controller for spawning towers
    /// </summary>
    [RequireComponent(typeof(RectTransform))]
    public class TowerSpawnButton : MonoBehaviour, IDragHandler
    {
        /// <summary>
        /// The text attached to the button
        /// </summary>
        public Text buttonText;
    /// <summary>
    /// A button controller for spawning towers
    /// </summary>
    [RequireComponent(typeof(RectTransform))]
    public class TowerSpawnButton : MonoBehaviour, IDragHandler
    {
        /// <summary>
        /// The text attached to the button
        /// </summary>
        public Text buttonText;
        public Image towerIcon;
        public Image towerIcon;
        public Button buyButton;
        public Button buyButton;
        public Image energyIcon;
        public Image energyIcon;
        public Color energyDefaultColor;
        public Color energyInvalidColor;
        public Color energyDefaultColor;
        /// <summary>
        /// Fires when the button is tapped
        /// </summary>
        public event Action<Tower> buttonTapped;
        public Color energyInvalidColor;
        /// <summary>
        /// Fires when the pointer is outside of the button bounds
        /// and still down
        /// </summary>
        public event Action<Tower> draggedOff;
        /// <summary>
        /// The tower controller that defines the button
        /// </summary>
        Tower m_Tower;
        /// <summary>
        /// Fires when the button is tapped
        /// </summary>
        public event Action<Tower> buttonTapped;
        /// <summary>
        /// Cached reference to level currency
        /// </summary>
        Currency m_Currency;
        /// <summary>
        /// Fires when the pointer is outside of the button bounds
        /// and still down
        /// </summary>
        public event Action<Tower> draggedOff;
        /// <summary>
        /// The attached rect transform
        /// </summary>
        RectTransform m_RectTransform;
        /// <summary>
        /// The tower controller that defines the button
        /// </summary>
        Tower m_Tower;
        /// <summary>
        /// Checks if the pointer is out of bounds
        /// and then fires the draggedOff event
        /// </summary>
        public virtual void OnDrag(PointerEventData eventData)
        {
            if (!RectTransformUtility.RectangleContainsScreenPoint(m_RectTransform, eventData.position))
            {
                if (draggedOff != null)
                {
                    draggedOff(m_Tower);
                }
            }
        }
        /// <summary>
        /// Cached reference to level currency
        /// </summary>
        Currency m_Currency;
        /// <summary>
        /// Define the button information for the tower
        /// </summary>
        /// <param name="towerData">
        /// The tower to initialize the button with
        /// </param>
        public void InitializeButton(Tower towerData)
        {
            m_Tower = towerData;
        /// <summary>
        /// The attached rect transform
        /// </summary>
        RectTransform m_RectTransform;
            if (towerData.levels.Length > 0)
            {
                TowerLevel firstTower = towerData.levels[0];
            }
            else
            {
                Debug.LogWarning("[Tower Spawn Button] No level data for tower");
            }
        /// <summary>
        /// Checks if the pointer is out of bounds
        /// and then fires the draggedOff event
        /// </summary>
        public virtual void OnDrag(PointerEventData eventData)
        {
            if (!RectTransformUtility.RectangleContainsScreenPoint(m_RectTransform, eventData.position))
            {
                if (draggedOff != null)
                {
                    draggedOff(m_Tower);
                }
            }
        }
            if (LevelManager.instanceExists)
            {
                m_Currency = LevelManager.instance.currency;
                m_Currency.currencyChanged += UpdateButton;
            }
            else
            {
                Debug.LogWarning("[Tower Spawn Button] No level manager to get currency object");
            }
            UpdateButton();
        }
        /// <summary>
        /// Define the button information for the tower
        /// </summary>
        /// <param name="towerData">
        /// The tower to initialize the button with
        /// </param>
        public void InitializeButton(Tower towerData)
        {
            m_Tower = towerData;
        /// <summary>
        /// Cache the rect transform
        /// </summary>
        protected virtual void Awake()
        {
            m_RectTransform = (RectTransform) transform;
        }
            TowerLevel firstTower = towerData.CurrentTowerLevel;
        /// <summary>
        /// Unsubscribe from events
        /// </summary>
        protected virtual void OnDestroy()
        {
            if (m_Currency != null)
            {
                m_Currency.currencyChanged -= UpdateButton;
            }
        }
            if (LevelManager.instanceExists)
            {
                m_Currency = LevelManager.instance.currency;
                m_Currency.currencyChanged += UpdateButton;
            }
            else
            {
                Debug.LogWarning("[Tower Spawn Button] No level manager to get currency object");
            }
            UpdateButton();
        }
        /// <summary>
        /// The click for when the button is tapped
        /// </summary>
        public void OnClick()
        {
            if (buttonTapped != null)
            {
                buttonTapped(m_Tower);
            }
        }
        /// <summary>
        /// Cache the rect transform
        /// </summary>
        protected virtual void Awake()
        {
            m_RectTransform = (RectTransform)transform;
        }
        /// <summary>
        /// Update the button's button state based on cost
        /// </summary>
        void UpdateButton()
        {
            if (m_Currency == null)
            {
                return;
            }
        /// <summary>
        /// Unsubscribe from events
        /// </summary>
        protected virtual void OnDestroy()
        {
            if (m_Currency != null)
            {
                m_Currency.currencyChanged -= UpdateButton;
            }
        }
            // // Enable button
            // if (m_Currency.CanAfford(m_Tower.purchaseCost) && !buyButton.interactable)
            // {
            //     buyButton.interactable = true;
            //     energyIcon.color = energyDefaultColor;
            // }
            // else if (!m_Currency.CanAfford(m_Tower.purchaseCost) && buyButton.interactable)
            // {
            //     buyButton.interactable = false;
            //     energyIcon.color = energyInvalidColor;
            // }
        }
    }
        /// <summary>
        /// The click for when the button is tapped
        /// </summary>
        public void OnClick()
        {
            if (buttonTapped != null)
            {
                buttonTapped(m_Tower);
            }
        }
        /// <summary>
        /// Update the button's button state based on cost
        /// </summary>
        void UpdateButton()
        {
            if (m_Currency == null)
            {
                return;
            }
            // // Enable button
            // if (m_Currency.CanAfford(m_Tower.purchaseCost) && !buyButton.interactable)
            // {
            //     buyButton.interactable = true;
            //     energyIcon.color = energyDefaultColor;
            // }
            // else if (!m_Currency.CanAfford(m_Tower.purchaseCost) && buyButton.interactable)
            // {
            //     buyButton.interactable = false;
            //     energyIcon.color = energyInvalidColor;
            // }
        }
    }
}
Assets/Scripts/TowerDefense/UI/HUD/TowerUI.cs
@@ -80,11 +80,6 @@
                // TEST CODE TO DELETE:
                if (m_Tower != null)
                    GameUI.instance.startDragTower(m_Tower);
                /** 以下代码用于测试合成:
                if((!m_Tower.isAtMaxLevel) && GameUI.instance.deleteSameLvlTower( m_Tower))
                {
                    GameUI.instance.UpgradeSelectedTower();
                }*/
                return;
            }
            else
@@ -98,7 +93,7 @@
            if (upgradeButton != null)
            {
                upgradeButton.interactable = true;
                bool maxLevel = m_Tower.isAtMaxLevel;
                bool maxLevel = m_Tower.IsMaxLevel;
                upgradeButton.gameObject.SetActive(!maxLevel);
            }
            LevelManager.instance.currency.currencyChanged += OnCurrencyChanged;
Assets/Scripts/TowerDefense/UI/RadiusVisualizerController.cs
@@ -31,7 +31,7 @@
        {
            // Create necessary affector radius visualizations
            List<ITowerRadiusProvider> providers =
                tower.levels[tower.currentLevel].GetRadiusVisualizers();
                tower.CurrentTowerLevel.GetRadiusVisualizers();
            int length = providers.Count;
            for (int i = 0; i < length; i++)
Assets/StreamingAssets/Table/elf_info.json
New file
@@ -0,0 +1 @@
[[101,"炸弹火鸟",60,0,500,1,0,0,0,0],[201,"雪糕投手",60,0,500,1,0,0,0,0],[301,"玉米枪手",120,300,500,1,0,0,0,0]]
Assets/StreamingAssets/Table/elf_info.json.meta
copy from Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 4.prefab.meta copy to Assets/StreamingAssets/Table/elf_info.json.meta
File was copied from Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 4.prefab.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 517d2b5ee0bf1a3489b4273193b8a322
PrefabImporter:
guid: 1c22226b398266e498843162a7f0ab84
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
Assets/StreamingAssets/Table/elf_upgrade.json
New file
@@ -0,0 +1 @@
[[1,1000],[2,2000],[3,3000],[4,4000],[5,5000],[6,6000],[7,7000],[8,8000],[9,9000],[10,10000]]
Assets/StreamingAssets/Table/elf_upgrade.json.meta
copy from Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 4.prefab.meta copy to Assets/StreamingAssets/Table/elf_upgrade.json.meta
File was copied from Assets/Prefabs/Towers/Fire/Effect_HuoJingLing_Atk 4.prefab.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 517d2b5ee0bf1a3489b4273193b8a322
PrefabImporter:
guid: ed1a8f411ce6a1949aaa63563b301c3b
DefaultImporter:
  externalObjects: {}
  userData: 
  assetBundleName: