From 2ae9edd5bfd8b8baabb8cd995485f9ade4faebc9 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Wed, 04 Nov 2020 20:22:50 +0800
Subject: [PATCH] 增加音效

---
 Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs                                     |  707 +++++++++++++------------
 Assets/Resources/Music/金币.mp3                                                               |    0 
 Assets/Scripts/TowerDefense/UI/EndlessBossHPManager.cs                                      |    4 
 Assets/Resources/Music/UI按键.mp3                                                             |    0 
 Assets/Scripts/TowerDefense/UI/MainMenuScene.cs                                             |    4 
 Assets/00000/package/Materials/Sequence_019_4X4_02.mat                                      |    2 
 Assets/Resources/Music/水攻击.wav.meta                                                         |   22 
 Assets/Scenes/Levels/Battle/Endless.unity                                                   |   57 -
 Assets/00000/package/Materials/Sequence_022_4X4_02.mat                                      |    2 
 Assets/Resources/Music/不可点击_错误.wav                                                          |    0 
 Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs                                    |   29 +
 Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs                                        |    2 
 Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs                                         |    5 
 Assets/00000/package/Materials/Sequence_009_3X2.mat                                         |    2 
 Assets/00000/package/Materials/Glow_003_b.mat                                               |    2 
 Assets/Scripts/TowerDefense/UI/EndlessSettlementPropList.cs                                 |    2 
 Assets/Resources/Music/拖动宝石时.wav.meta                                                       |   22 
 Assets/Resources/Music/火攻击.wav                                                              |    0 
 Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs                              |    2 
 Assets/00000/package/Materials/Glow_039.mat                                                 |    2 
 Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs                                            |    6 
 Assets/Resources/Music/翻书.wav                                                               |    0 
 Assets/Resources/Music/不可点击_错误.wav.meta                                                     |   22 
 Assets/Resources/Music/木攻击.wav.meta                                                         |   22 
 Assets/00000/package/Materials/Object_004.mat                                               |    2 
 Assets/Scripts/Music/AudioSourceManager.cs.meta                                             |   11 
 Assets/00000/package/Texture/Texmap_003.png.meta                                            |   13 
 Assets/00000/package/Materials/Sequence_008_6X4.mat                                         |    2 
 Assets/Resources/Music/敌人攻击塔.wav                                                            |    0 
 Assets/Scripts/TowerDefense/UI/EndGameScreen.cs                                             |   16 
 Assets/00000/package/Materials/Sequence_006_6X5.mat                                         |    2 
 Assets/Resources/Music/游戏结束.mp3.meta                                                        |   22 
 Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs                                        |    2 
 Assets/00000/package/Materials/Object_006.mat                                               |    2 
 Assets/Resources/Music/火攻击.wav.meta                                                         |   22 
 Assets/Scripts/GameAnalytics_SDK/UI/LoginUI.cs                                              |    1 
 Assets/00000/package/Materials/Glow_012_b.mat                                               |    2 
 Assets/Resources/Music/放下宝石.wav.meta                                                        |   22 
 Assets/Resources/Music/水攻击.wav                                                              |    0 
 Assets/Resources/Music/BGM2.mp3.meta                                                        |   22 
 Assets/Resources/Music/选择buff后.wav                                                          |    0 
 Assets/Resources/Music/放下宝石.wav                                                             |    0 
 Assets/Resources/Music/电技能.wav                                                              |    0 
 Assets/GabrielAguiarProductions/Unique_Projectiles_Volume_1/Scripts/ProjectileMoveScript.cs |    8 
 Assets/Scripts/Manager/ManagerRoot.cs                                                       |    6 
 Assets/Resources/Music/木攻击.wav                                                              |    0 
 Assets/Scripts/GameAnalytics_SDK/TDAA_SDKManager.cs                                         |    1 
 Assets/00000/package/Materials/Object_005.mat                                               |    2 
 Assets/Resources/Music/BGM1.mp3.meta                                                        |   22 
 Assets/Resources/Music/翻书.wav.meta                                                          |   22 
 Assets/Resources/Music/拖动宝石时.wav                                                            |    0 
 Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs                                         |    8 
 Assets/00000/package/Materials/Sequence_005_4X3.mat                                         |    2 
 Assets/Resources/Music/电技能.wav.meta                                                         |   22 
 Assets/Scripts/Music/AudioSourceManager.cs                                                  |  272 ++++++++++
 Assets/Resources/Music/BGM2.mp3                                                             |    0 
 Assets/Resources/Music/火技能.wav                                                              |    0 
 Assets/Resources/Music/金币.mp3.meta                                                          |   22 
 Assets/00000/package/Materials/Sequence_024_9X8_b.mat                                       |    2 
 Assets/Resources/Music/敌人攻击塔.wav.meta                                                       |   22 
 Assets/00000/package/Materials/Sequence_007_4X3.mat                                         |    2 
 Assets/Resources/Music/选择buff后.wav.meta                                                     |   22 
 Assets/00000/package/Materials/Object_009.mat                                               |    2 
 Assets/Resources/Music/UI按键.mp3.meta                                                        |   22 
 Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs                                         |    4 
 Assets/Resources/Music/BGM1.mp3                                                             |    0 
 Assets/Resources/Music/游戏结束.mp3                                                             |    0 
 Assets/00000/package/Materials/Glow_029_02.mat                                              |    2 
 Assets/Resources/Music/BOSS死亡.wav.meta                                                      |   22 
 Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs                  |   11 
 Assets/Resources/Music/火技能.wav.meta                                                         |   22 
 Assets/Resources/Music/BOSS死亡.wav                                                           |    0 
 Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs                                 |    4 
 Assets/Scripts/Music.meta                                                                   |    8 
 Assets/Resources/Music.meta                                                                 |    8 
 75 files changed, 1,181 insertions(+), 416 deletions(-)

diff --git a/Assets/00000/package/Materials/Glow_003_b.mat b/Assets/00000/package/Materials/Glow_003_b.mat
index fbc5af9..1213ce1 100644
--- a/Assets/00000/package/Materials/Glow_003_b.mat
+++ b/Assets/00000/package/Materials/Glow_003_b.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Glow_003 1
+  m_Name: Glow_003_b
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Glow_012_b.mat b/Assets/00000/package/Materials/Glow_012_b.mat
index 852d75b..f85ccb1 100644
--- a/Assets/00000/package/Materials/Glow_012_b.mat
+++ b/Assets/00000/package/Materials/Glow_012_b.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Glow_012 1
+  m_Name: Glow_012_b
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Glow_029_02.mat b/Assets/00000/package/Materials/Glow_029_02.mat
index e53e9e9..044d917 100644
--- a/Assets/00000/package/Materials/Glow_029_02.mat
+++ b/Assets/00000/package/Materials/Glow_029_02.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Glow_029_b
+  m_Name: Glow_029_02
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Glow_039.mat b/Assets/00000/package/Materials/Glow_039.mat
index f98972b..3eba714 100644
--- a/Assets/00000/package/Materials/Glow_039.mat
+++ b/Assets/00000/package/Materials/Glow_039.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: ditu
+  m_Name: Glow_039
   m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Object_004.mat b/Assets/00000/package/Materials/Object_004.mat
index 1ddc0ab..d653b32 100644
--- a/Assets/00000/package/Materials/Object_004.mat
+++ b/Assets/00000/package/Materials/Object_004.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Object_0014
+  m_Name: Object_004
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Object_005.mat b/Assets/00000/package/Materials/Object_005.mat
index 1cf18e2..be27a39 100644
--- a/Assets/00000/package/Materials/Object_005.mat
+++ b/Assets/00000/package/Materials/Object_005.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Object_0029
+  m_Name: Object_005
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Object_006.mat b/Assets/00000/package/Materials/Object_006.mat
index 6fe54fc..efd617c 100644
--- a/Assets/00000/package/Materials/Object_006.mat
+++ b/Assets/00000/package/Materials/Object_006.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: "\u7CBE\u70753"
+  m_Name: Object_006
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Object_009.mat b/Assets/00000/package/Materials/Object_009.mat
index 1867039..7d98472 100644
--- a/Assets/00000/package/Materials/Object_009.mat
+++ b/Assets/00000/package/Materials/Object_009.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: "1920\u6C34\u66761"
+  m_Name: Object_009
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Sequence_005_4X3.mat b/Assets/00000/package/Materials/Sequence_005_4X3.mat
index 955abd2..530d49c 100644
--- a/Assets/00000/package/Materials/Sequence_005_4X3.mat
+++ b/Assets/00000/package/Materials/Sequence_005_4X3.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: 7e7ae91d-c194-4197-81f1-30d18678a08c
+  m_Name: Sequence_005_4X3
   m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Sequence_006_6X5.mat b/Assets/00000/package/Materials/Sequence_006_6X5.mat
index 873d80c..131591d 100644
--- a/Assets/00000/package/Materials/Sequence_006_6X5.mat
+++ b/Assets/00000/package/Materials/Sequence_006_6X5.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: 42c3f028-4755-4977-8544-0365321b0312
+  m_Name: Sequence_006_6X5
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Sequence_007_4X3.mat b/Assets/00000/package/Materials/Sequence_007_4X3.mat
index ccb5df0..ecb9371 100644
--- a/Assets/00000/package/Materials/Sequence_007_4X3.mat
+++ b/Assets/00000/package/Materials/Sequence_007_4X3.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: 218d2fa5-3080-44fd-8769-2dcbb57a589f
+  m_Name: Sequence_007_4X3
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Sequence_008_6X4.mat b/Assets/00000/package/Materials/Sequence_008_6X4.mat
index 4b364ba..769f9c7 100644
--- a/Assets/00000/package/Materials/Sequence_008_6X4.mat
+++ b/Assets/00000/package/Materials/Sequence_008_6X4.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: c8cd391b-30df-4811-9715-3b8cdf8c36c6
+  m_Name: Sequence_008_6X4
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Sequence_009_3X2.mat b/Assets/00000/package/Materials/Sequence_009_3X2.mat
index 0e89058..9995a7d 100644
--- a/Assets/00000/package/Materials/Sequence_009_3X2.mat
+++ b/Assets/00000/package/Materials/Sequence_009_3X2.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: ef115a70-dd8a-4420-9182-f650ae55c8da
+  m_Name: Sequence_009_3X2
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 0
diff --git a/Assets/00000/package/Materials/Sequence_019_4X4_02.mat b/Assets/00000/package/Materials/Sequence_019_4X4_02.mat
index ab95100..8004559 100644
--- a/Assets/00000/package/Materials/Sequence_019_4X4_02.mat
+++ b/Assets/00000/package/Materials/Sequence_019_4X4_02.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Sequence_019_4X4_b
+  m_Name: Sequence_019_4X4_02
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Sequence_022_4X4_02.mat b/Assets/00000/package/Materials/Sequence_022_4X4_02.mat
index 9cd4746..5f513be 100644
--- a/Assets/00000/package/Materials/Sequence_022_4X4_02.mat
+++ b/Assets/00000/package/Materials/Sequence_022_4X4_02.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Sequence_022_4X4 1
+  m_Name: Sequence_022_4X4_02
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Materials/Sequence_024_9X8_b.mat b/Assets/00000/package/Materials/Sequence_024_9X8_b.mat
index 7fd30ef..1d18b75 100644
--- a/Assets/00000/package/Materials/Sequence_024_9X8_b.mat
+++ b/Assets/00000/package/Materials/Sequence_024_9X8_b.mat
@@ -7,7 +7,7 @@
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Sequence_024_9X8 1
+  m_Name: Sequence_024_9X8_b
   m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
   m_ShaderKeywords: 
   m_LightmapFlags: 4
diff --git a/Assets/00000/package/Texture/Texmap_003.png.meta b/Assets/00000/package/Texture/Texmap_003.png.meta
index baafd62..0e5cb20 100644
--- a/Assets/00000/package/Texture/Texmap_003.png.meta
+++ b/Assets/00000/package/Texture/Texmap_003.png.meta
@@ -3,11 +3,11 @@
 TextureImporter:
   internalIDToNameTable: []
   externalObjects: {}
-  serializedVersion: 10
+  serializedVersion: 11
   mipmaps:
     mipMapMode: 0
-    enableMipMap: 0
-    sRGBTexture: 1
+    enableMipMap: 1
+    sRGBTexture: 0
     linearTexture: 0
     fadeOut: 0
     borderMipMap: 0
@@ -23,6 +23,7 @@
   isReadable: 0
   streamingMipmaps: 0
   streamingMipmapsPriority: 0
+  vTOnly: 0
   grayScaleToAlpha: 0
   generateCubemap: 6
   cubemapConvolution: 0
@@ -49,14 +50,16 @@
   spriteBorder: {x: 0, y: 0, z: 0, w: 0}
   spriteGenerateFallbackPhysicsShape: 1
   alphaUsage: 1
-  alphaIsTransparency: 1
+  alphaIsTransparency: 0
   spriteTessellationDetail: -1
-  textureType: 0
+  textureType: 1
   textureShape: 1
   singleChannelComponent: 0
   maxTextureSizeSet: 0
   compressionQualitySet: 0
   textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 1
   platformSettings:
   - serializedVersion: 3
     buildTarget: DefaultTexturePlatform
diff --git a/Assets/GabrielAguiarProductions/Unique_Projectiles_Volume_1/Scripts/ProjectileMoveScript.cs b/Assets/GabrielAguiarProductions/Unique_Projectiles_Volume_1/Scripts/ProjectileMoveScript.cs
index ab37108..559db9c 100644
--- a/Assets/GabrielAguiarProductions/Unique_Projectiles_Volume_1/Scripts/ProjectileMoveScript.cs
+++ b/Assets/GabrielAguiarProductions/Unique_Projectiles_Volume_1/Scripts/ProjectileMoveScript.cs
@@ -50,10 +50,10 @@
             }
         }
 
-        if (shotSFX != null && GetComponent<AudioSource>())
-        {
-            GetComponent<AudioSource>().PlayOneShot(shotSFX);
-        }
+        // if (shotSFX != null && GetComponent<AudioSource>())
+        // {
+        //     GetComponent<AudioSource>().PlayOneShot(shotSFX);
+        // }
 
         // StartCoroutine(RecycleParticle(gameObject, recycleDelay));
     }
diff --git a/Assets/Resources/Music.meta b/Assets/Resources/Music.meta
new file mode 100644
index 0000000..402577e
--- /dev/null
+++ b/Assets/Resources/Music.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 50373d69833fd2c4587aacb78149479e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Resources/Music/BGM1.mp3 b/Assets/Resources/Music/BGM1.mp3
new file mode 100644
index 0000000..e7ac72f
--- /dev/null
+++ b/Assets/Resources/Music/BGM1.mp3
Binary files differ
diff --git a/Assets/Resources/Music/BGM1.mp3.meta b/Assets/Resources/Music/BGM1.mp3.meta
new file mode 100644
index 0000000..c6a2ce5
--- /dev/null
+++ b/Assets/Resources/Music/BGM1.mp3.meta
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 33c8d9123e51138469bc394b1d779b94
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Resources/Music/BGM2.mp3 b/Assets/Resources/Music/BGM2.mp3
new file mode 100644
index 0000000..a728ad1
--- /dev/null
+++ b/Assets/Resources/Music/BGM2.mp3
Binary files differ
diff --git a/Assets/Resources/Music/BGM2.mp3.meta b/Assets/Resources/Music/BGM2.mp3.meta
new file mode 100644
index 0000000..24c60cf
--- /dev/null
+++ b/Assets/Resources/Music/BGM2.mp3.meta
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 6f2fb621b3ebc2c49a3e50032946657e
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/BOSS\346\255\273\344\272\241.wav" "b/Assets/Resources/Music/BOSS\346\255\273\344\272\241.wav"
new file mode 100644
index 0000000..9d821a4
--- /dev/null
+++ "b/Assets/Resources/Music/BOSS\346\255\273\344\272\241.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/BOSS\346\255\273\344\272\241.wav.meta" "b/Assets/Resources/Music/BOSS\346\255\273\344\272\241.wav.meta"
new file mode 100644
index 0000000..1a0bd3b
--- /dev/null
+++ "b/Assets/Resources/Music/BOSS\346\255\273\344\272\241.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: a8b59ef05212b344db6712b146dd2d49
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/UI\346\214\211\351\224\256.mp3" "b/Assets/Resources/Music/UI\346\214\211\351\224\256.mp3"
new file mode 100644
index 0000000..5084546
--- /dev/null
+++ "b/Assets/Resources/Music/UI\346\214\211\351\224\256.mp3"
Binary files differ
diff --git "a/Assets/Resources/Music/UI\346\214\211\351\224\256.mp3.meta" "b/Assets/Resources/Music/UI\346\214\211\351\224\256.mp3.meta"
new file mode 100644
index 0000000..fdc2241
--- /dev/null
+++ "b/Assets/Resources/Music/UI\346\214\211\351\224\256.mp3.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 43808f08f96a2ed4c878dd497c285654
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\344\270\215\345\217\257\347\202\271\345\207\273_\351\224\231\350\257\257.wav" "b/Assets/Resources/Music/\344\270\215\345\217\257\347\202\271\345\207\273_\351\224\231\350\257\257.wav"
new file mode 100644
index 0000000..752bcbb
--- /dev/null
+++ "b/Assets/Resources/Music/\344\270\215\345\217\257\347\202\271\345\207\273_\351\224\231\350\257\257.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\344\270\215\345\217\257\347\202\271\345\207\273_\351\224\231\350\257\257.wav.meta" "b/Assets/Resources/Music/\344\270\215\345\217\257\347\202\271\345\207\273_\351\224\231\350\257\257.wav.meta"
new file mode 100644
index 0000000..215ab01
--- /dev/null
+++ "b/Assets/Resources/Music/\344\270\215\345\217\257\347\202\271\345\207\273_\351\224\231\350\257\257.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 0782288ff0426494da2f384e99479605
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\346\213\226\345\212\250\345\256\235\347\237\263\346\227\266.wav" "b/Assets/Resources/Music/\346\213\226\345\212\250\345\256\235\347\237\263\346\227\266.wav"
new file mode 100644
index 0000000..16f90d3
--- /dev/null
+++ "b/Assets/Resources/Music/\346\213\226\345\212\250\345\256\235\347\237\263\346\227\266.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\346\213\226\345\212\250\345\256\235\347\237\263\346\227\266.wav.meta" "b/Assets/Resources/Music/\346\213\226\345\212\250\345\256\235\347\237\263\346\227\266.wav.meta"
new file mode 100644
index 0000000..346ef77
--- /dev/null
+++ "b/Assets/Resources/Music/\346\213\226\345\212\250\345\256\235\347\237\263\346\227\266.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 742e0a01d32ae4442bfb87cd27dea761
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\346\224\276\344\270\213\345\256\235\347\237\263.wav" "b/Assets/Resources/Music/\346\224\276\344\270\213\345\256\235\347\237\263.wav"
new file mode 100644
index 0000000..69aa5d5
--- /dev/null
+++ "b/Assets/Resources/Music/\346\224\276\344\270\213\345\256\235\347\237\263.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\346\224\276\344\270\213\345\256\235\347\237\263.wav.meta" "b/Assets/Resources/Music/\346\224\276\344\270\213\345\256\235\347\237\263.wav.meta"
new file mode 100644
index 0000000..f904e9e
--- /dev/null
+++ "b/Assets/Resources/Music/\346\224\276\344\270\213\345\256\235\347\237\263.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 8a482b8cb705ac14ca63365b3b5f4cf7
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\346\225\214\344\272\272\346\224\273\345\207\273\345\241\224.wav" "b/Assets/Resources/Music/\346\225\214\344\272\272\346\224\273\345\207\273\345\241\224.wav"
new file mode 100644
index 0000000..f423a4e
--- /dev/null
+++ "b/Assets/Resources/Music/\346\225\214\344\272\272\346\224\273\345\207\273\345\241\224.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\346\225\214\344\272\272\346\224\273\345\207\273\345\241\224.wav.meta" "b/Assets/Resources/Music/\346\225\214\344\272\272\346\224\273\345\207\273\345\241\224.wav.meta"
new file mode 100644
index 0000000..87621fc
--- /dev/null
+++ "b/Assets/Resources/Music/\346\225\214\344\272\272\346\224\273\345\207\273\345\241\224.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: b4264295d9357fb4684313bd508f2d47
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\346\234\250\346\224\273\345\207\273.wav" "b/Assets/Resources/Music/\346\234\250\346\224\273\345\207\273.wav"
new file mode 100644
index 0000000..d29217e
--- /dev/null
+++ "b/Assets/Resources/Music/\346\234\250\346\224\273\345\207\273.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\346\234\250\346\224\273\345\207\273.wav.meta" "b/Assets/Resources/Music/\346\234\250\346\224\273\345\207\273.wav.meta"
new file mode 100644
index 0000000..bce0c5d
--- /dev/null
+++ "b/Assets/Resources/Music/\346\234\250\346\224\273\345\207\273.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 7df95920553c48542a42652d517d7bf9
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\346\260\264\346\224\273\345\207\273.wav" "b/Assets/Resources/Music/\346\260\264\346\224\273\345\207\273.wav"
new file mode 100644
index 0000000..dd1d76e
--- /dev/null
+++ "b/Assets/Resources/Music/\346\260\264\346\224\273\345\207\273.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\346\260\264\346\224\273\345\207\273.wav.meta" "b/Assets/Resources/Music/\346\260\264\346\224\273\345\207\273.wav.meta"
new file mode 100644
index 0000000..e325a0d
--- /dev/null
+++ "b/Assets/Resources/Music/\346\260\264\346\224\273\345\207\273.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 1b2f3693228142947998df0e8083ab76
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\346\270\270\346\210\217\347\273\223\346\235\237.mp3" "b/Assets/Resources/Music/\346\270\270\346\210\217\347\273\223\346\235\237.mp3"
new file mode 100644
index 0000000..646652a
--- /dev/null
+++ "b/Assets/Resources/Music/\346\270\270\346\210\217\347\273\223\346\235\237.mp3"
Binary files differ
diff --git "a/Assets/Resources/Music/\346\270\270\346\210\217\347\273\223\346\235\237.mp3.meta" "b/Assets/Resources/Music/\346\270\270\346\210\217\347\273\223\346\235\237.mp3.meta"
new file mode 100644
index 0000000..4bedff4
--- /dev/null
+++ "b/Assets/Resources/Music/\346\270\270\346\210\217\347\273\223\346\235\237.mp3.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 8d05baf767f6c014da8dafb958119d55
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\347\201\253\346\212\200\350\203\275.wav" "b/Assets/Resources/Music/\347\201\253\346\212\200\350\203\275.wav"
new file mode 100644
index 0000000..1426f09
--- /dev/null
+++ "b/Assets/Resources/Music/\347\201\253\346\212\200\350\203\275.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\347\201\253\346\212\200\350\203\275.wav.meta" "b/Assets/Resources/Music/\347\201\253\346\212\200\350\203\275.wav.meta"
new file mode 100644
index 0000000..87c494a
--- /dev/null
+++ "b/Assets/Resources/Music/\347\201\253\346\212\200\350\203\275.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 9568b3c3314ba5e42ab333482d08136a
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\347\201\253\346\224\273\345\207\273.wav" "b/Assets/Resources/Music/\347\201\253\346\224\273\345\207\273.wav"
new file mode 100644
index 0000000..ac692f6
--- /dev/null
+++ "b/Assets/Resources/Music/\347\201\253\346\224\273\345\207\273.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\347\201\253\346\224\273\345\207\273.wav.meta" "b/Assets/Resources/Music/\347\201\253\346\224\273\345\207\273.wav.meta"
new file mode 100644
index 0000000..70d62ee
--- /dev/null
+++ "b/Assets/Resources/Music/\347\201\253\346\224\273\345\207\273.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: b034842bd9cf25e4f8428d69e5139efd
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\347\224\265\346\212\200\350\203\275.wav" "b/Assets/Resources/Music/\347\224\265\346\212\200\350\203\275.wav"
new file mode 100644
index 0000000..96db088
--- /dev/null
+++ "b/Assets/Resources/Music/\347\224\265\346\212\200\350\203\275.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\347\224\265\346\212\200\350\203\275.wav.meta" "b/Assets/Resources/Music/\347\224\265\346\212\200\350\203\275.wav.meta"
new file mode 100644
index 0000000..09fb5bc
--- /dev/null
+++ "b/Assets/Resources/Music/\347\224\265\346\212\200\350\203\275.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 00215b7c90990e141b365e74e26b4085
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\347\277\273\344\271\246.wav" "b/Assets/Resources/Music/\347\277\273\344\271\246.wav"
new file mode 100644
index 0000000..0c61697
--- /dev/null
+++ "b/Assets/Resources/Music/\347\277\273\344\271\246.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\347\277\273\344\271\246.wav.meta" "b/Assets/Resources/Music/\347\277\273\344\271\246.wav.meta"
new file mode 100644
index 0000000..40f551d
--- /dev/null
+++ "b/Assets/Resources/Music/\347\277\273\344\271\246.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: d4487dcf24219ad4ba6a1c264dd56425
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\351\200\211\346\213\251buff\345\220\216.wav" "b/Assets/Resources/Music/\351\200\211\346\213\251buff\345\220\216.wav"
new file mode 100644
index 0000000..71fd851
--- /dev/null
+++ "b/Assets/Resources/Music/\351\200\211\346\213\251buff\345\220\216.wav"
Binary files differ
diff --git "a/Assets/Resources/Music/\351\200\211\346\213\251buff\345\220\216.wav.meta" "b/Assets/Resources/Music/\351\200\211\346\213\251buff\345\220\216.wav.meta"
new file mode 100644
index 0000000..ffb6d2d
--- /dev/null
+++ "b/Assets/Resources/Music/\351\200\211\346\213\251buff\345\220\216.wav.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 28f2776f5338e0d44af75342f26e20da
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git "a/Assets/Resources/Music/\351\207\221\345\270\201.mp3" "b/Assets/Resources/Music/\351\207\221\345\270\201.mp3"
new file mode 100644
index 0000000..a56d07c
--- /dev/null
+++ "b/Assets/Resources/Music/\351\207\221\345\270\201.mp3"
Binary files differ
diff --git "a/Assets/Resources/Music/\351\207\221\345\270\201.mp3.meta" "b/Assets/Resources/Music/\351\207\221\345\270\201.mp3.meta"
new file mode 100644
index 0000000..28a1566
--- /dev/null
+++ "b/Assets/Resources/Music/\351\207\221\345\270\201.mp3.meta"
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: c577492ad0798ba4ba37ae8aaa7794b9
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scenes/Levels/Battle/Endless.unity b/Assets/Scenes/Levels/Battle/Endless.unity
index fe0a791..c35ef94 100644
--- a/Assets/Scenes/Levels/Battle/Endless.unity
+++ b/Assets/Scenes/Levels/Battle/Endless.unity
@@ -1275,7 +1275,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &157430578
 Transform:
   m_ObjectHideFlags: 0
@@ -2124,7 +2124,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &224279364
 Transform:
   m_ObjectHideFlags: 0
@@ -2845,7 +2845,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &336125253
 Transform:
   m_ObjectHideFlags: 0
@@ -5000,7 +5000,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &622947616
 Transform:
   m_ObjectHideFlags: 0
@@ -5763,7 +5763,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &786912553
 Transform:
   m_ObjectHideFlags: 0
@@ -7187,7 +7187,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &938609223
 Transform:
   m_ObjectHideFlags: 0
@@ -7453,7 +7453,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &958509393
 Transform:
   m_ObjectHideFlags: 0
@@ -7865,7 +7865,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1015273256
 Transform:
   m_ObjectHideFlags: 0
@@ -8011,7 +8011,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1017486113
 Transform:
   m_ObjectHideFlags: 0
@@ -9005,7 +9005,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1099308090
 Transform:
   m_ObjectHideFlags: 0
@@ -9345,7 +9345,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1149459456
 Transform:
   m_ObjectHideFlags: 0
@@ -10293,7 +10293,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1272628193
 Transform:
   m_ObjectHideFlags: 0
@@ -10511,7 +10511,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1312099771
 Transform:
   m_ObjectHideFlags: 0
@@ -12730,7 +12730,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1581489634
 Transform:
   m_ObjectHideFlags: 0
@@ -13055,6 +13055,7 @@
   m_Script: {fileID: 11500000, guid: 003fa822c2d516a488dcbbed96c8d9ab, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  buyButtonScaler: 1.9
   placementTilePrefab: {fileID: 114496876178851720, guid: 8ce97201eea4a404b86d7d0906b89847,
     type: 3}
   placementTilePrefabMobile: {fileID: 114496876178851720, guid: 18a440af7ac5d46c8af359534286c4bf,
@@ -13823,7 +13824,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1719795769
 Transform:
   m_ObjectHideFlags: 0
@@ -15400,7 +15401,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1900826878
 Transform:
   m_ObjectHideFlags: 0
@@ -15687,7 +15688,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1930436492
 Transform:
   m_ObjectHideFlags: 0
@@ -16111,19 +16112,7 @@
   m_TargetGraphic: {fileID: 1953656509}
   m_OnClick:
     m_PersistentCalls:
-      m_Calls:
-      - m_Target: {fileID: 1953656507}
-        m_TargetAssemblyTypeName: EndlessRandomTower, Assembly-CSharp
-        m_MethodName: onClick
-        m_Mode: 1
-        m_Arguments:
-          m_ObjectArgument: {fileID: 0}
-          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
-          m_IntArgument: 0
-          m_FloatArgument: 0
-          m_StringArgument: 
-          m_BoolArgument: 0
-        m_CallState: 2
+      m_Calls: []
 --- !u!114 &1953656509
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -16510,7 +16499,7 @@
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1967975859}
-  m_Enabled: 1
+  m_Enabled: 0
   serializedVersion: 4
   OutputAudioMixerGroup: {fileID: 243875498303300022, guid: c40bed98f23a748f89472abe9c1a6871,
     type: 2}
@@ -16936,7 +16925,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &1988006378
 Transform:
   m_ObjectHideFlags: 0
@@ -18057,7 +18046,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &2076014242
 Transform:
   m_ObjectHideFlags: 0
@@ -18293,7 +18282,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!4 &2127394827
 Transform:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/GameAnalytics_SDK/TDAA_SDKManager.cs b/Assets/Scripts/GameAnalytics_SDK/TDAA_SDKManager.cs
index 774a92f..9a0d80b 100644
--- a/Assets/Scripts/GameAnalytics_SDK/TDAA_SDKManager.cs
+++ b/Assets/Scripts/GameAnalytics_SDK/TDAA_SDKManager.cs
@@ -386,7 +386,6 @@
 
     private void OnDestroy()
     {
-        Debug.Log("onDestroy");
         TalkingDataPlugin.SessionStoped();
     }
 }
diff --git a/Assets/Scripts/GameAnalytics_SDK/UI/LoginUI.cs b/Assets/Scripts/GameAnalytics_SDK/UI/LoginUI.cs
index 7d4c3f0..539a428 100644
--- a/Assets/Scripts/GameAnalytics_SDK/UI/LoginUI.cs
+++ b/Assets/Scripts/GameAnalytics_SDK/UI/LoginUI.cs
@@ -82,6 +82,7 @@
     {
         if (!isLogining)
         {
+            AudioSourceManager.Ins.Play(AudioEnum.UI);
             TDAA_SDKManager.Ins.Statistics(2);//埋点
 
             //StartCoroutine(loginMy());
diff --git a/Assets/Scripts/Manager/ManagerRoot.cs b/Assets/Scripts/Manager/ManagerRoot.cs
index 15ff712..a020d44 100644
--- a/Assets/Scripts/Manager/ManagerRoot.cs
+++ b/Assets/Scripts/Manager/ManagerRoot.cs
@@ -16,12 +16,18 @@
             gameObject.AddComponent<DoNotDestory>();
             gameObject.AddComponent<MasterSocket>();
             gameObject.AddComponent<TDAA_SDKManager>();
+            gameObject.AddComponent<AudioSourceManager>();
 
             //gameObject.AddComponent<ErrorLogOnGUIMyTools>();
             //gameObject.AddComponent<JsonDataReader>();
 
         }
 
+        void Start()
+        {
+            AudioSourceManager.Ins.Play(AudioEnum.BGM1);
+        }
+
         // public void AfterRead()
         // {
         //     JsonDataReader.Instance.StartRead(() =>
diff --git a/Assets/Scripts/Music.meta b/Assets/Scripts/Music.meta
new file mode 100644
index 0000000..3042afd
--- /dev/null
+++ b/Assets/Scripts/Music.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d330a3137fb70f24496338b85278f40e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Music/AudioSourceManager.cs b/Assets/Scripts/Music/AudioSourceManager.cs
new file mode 100644
index 0000000..9c1b1af
--- /dev/null
+++ b/Assets/Scripts/Music/AudioSourceManager.cs
@@ -0,0 +1,272 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public enum AudioEnum
+{
+    BGM1,
+    BGM2,
+    UI,//UI按键
+    UIDisable,//UI不可点击_错误
+    BuffAppear,//翻书
+    ChooseBuff,//选择buff后
+    End,//游戏结束
+    BossDie,//BOSS死亡
+    AttackTower,//敌人攻击塔
+    DragTower,//拖动宝石时
+    PutTower,//放下宝石
+    FireTAttack,//火攻击
+    WaterTAttack,//水攻击
+    WoodTAttack,//木攻击
+    LightningSkill,//电技能
+    FireSkill//火技能
+}
+public class AudioSourceManager : MonoBehaviour
+{
+    private static AudioSourceManager _ins;
+
+    public static AudioSourceManager Ins
+    {
+        get { return _ins; }
+    }
+
+    private void Awake()
+    {
+        _ins = this;
+
+        clipDic = new Dictionary<string, AudioClip>();
+
+        audioSourceList = new List<AudioSource>();
+        for (int i = 0; i < 5; i++)
+        {
+            audioSourceList.Add(gameObject.AddComponent<AudioSource>());
+        }
+    }
+
+    private AudioSource audioSource;
+    private List<AudioSource> audioSourceList = new List<AudioSource>();
+
+    /// <summary>
+    /// 跳过第一个,第一个用来播放背景音 获取一个空的组件
+    /// </summary>
+    /// <returns></returns>
+    private AudioSource GetAudioSource()
+    {
+        for (int i = 1; i < audioSourceList.Count; i++)
+        {
+            if (!audioSourceList[i].isPlaying)
+            {
+                return audioSourceList[i];
+            }
+        }
+
+        AudioSource tmpAudioSource = gameObject.AddComponent<AudioSource>();
+        audioSourceList.Add(tmpAudioSource);
+        return tmpAudioSource;
+    }
+
+    private AudioClip LoadAudioClip(string musicName)
+    {
+        if (clipDic.ContainsKey(musicName))
+            return clipDic[musicName];
+        else
+        {
+            AudioClip au = Resources.Load<AudioClip>("Music/" + musicName);
+            clipDic.Add(musicName, au);
+            return au;
+        }
+
+    }
+
+    public void Play(AudioEnum en)
+    {
+        Debug.Log("播放了音效:"+en);
+        switch (en)
+        {
+            case AudioEnum.BGM1:
+                Play("BGM1", false);
+                break;
+            case AudioEnum.BGM2:
+                Play("BGM2", false);
+                break;
+            case AudioEnum.UI:
+                Play("UI按键", true);
+                break;
+            case AudioEnum.UIDisable:
+                Play("不可点击_错误", true);
+                break;
+            case AudioEnum.BuffAppear:
+                Play("翻书", true);
+                break;
+            case AudioEnum.ChooseBuff:
+                StopOneShot("选择buff后", true);
+                //Play("选择buff后", true);
+                break;
+            case AudioEnum.End:
+                Play("游戏结束", true);
+                break;
+            case AudioEnum.BossDie:
+                Play("BOSS死亡", true);
+                break;
+            case AudioEnum.AttackTower:
+                Play("敌人攻击塔", true);
+                break;
+            case AudioEnum.DragTower:
+                Play("拖动宝石时", true);
+                break;
+            case AudioEnum.PutTower:
+                Play("放下宝石", true);
+                break;
+            case AudioEnum.FireTAttack:
+                Play("火攻击", true);
+                break;
+            case AudioEnum.WaterTAttack:
+                Play("水攻击", true);
+                break;
+            case AudioEnum.WoodTAttack:
+                Play("木攻击", true);
+                break;
+            case AudioEnum.LightningSkill:
+                Play("电技能", true);
+                break;
+            case AudioEnum.FireSkill:
+                Play("火技能", true);
+                break;
+
+
+        }
+    }
+
+
+    Dictionary<string, AudioClip> clipDic;
+
+    private void Play(string musicName, bool isOneShot)
+    {
+        AudioClip au = LoadAudioClip(musicName);
+        AudioSource tmpAudioSource;
+        //tmpAudioSource.volume = PlayerPrefs.GetFloat("BgmVal");
+
+        if (isOneShot)
+        {
+            tmpAudioSource = GetAudioSource();
+            tmpAudioSource.clip = au;
+            tmpAudioSource.loop = false;
+
+            //tmpAudioSource.PlayOneShot(au);//无法立刻暂停
+            StartCoroutine(RemoAudio(tmpAudioSource, au));
+        }
+        else
+        {
+            tmpAudioSource = audioSourceList[0];
+            tmpAudioSource.clip = au;
+            tmpAudioSource.loop = true;
+        }
+        tmpAudioSource.Play();
+    }
+
+    /// <summary>
+    /// 销毁音效
+    /// </summary>
+    /// <param name="audioClip"></param>
+    private IEnumerator RemoAudio(AudioSource tmpAudioSource, AudioClip au)
+    {
+        if (audioSourceList.Count > 5)
+        {
+            yield return new WaitForSeconds(au.length);
+            audioSourceList.Remove(tmpAudioSource);
+            Destroy(tmpAudioSource);
+        }
+        yield break;
+    }
+
+
+    /// <summary>
+    /// 调整音效时更新音量
+    /// </summary>
+    public void UpdateAudioVal()
+    {
+        foreach (AudioSource val in audioSourceList)
+        {
+            //便利所有的Bgm ,设置音量
+            if (val)
+            {
+                val.volume = PlayerPrefs.GetFloat("BgmVal");
+            }
+
+        }
+    }
+
+    /// <summary>
+    /// 删除指定音效
+    /// </summary>
+    /// <param name="audioName">被删除的音乐</param>
+    public void DeleteAudio(string audioName)
+    {
+        foreach (AudioSource val in audioSourceList)
+        {
+            if (val && val.clip.name == audioName)
+            {
+                audioSourceList.Remove(val);
+                Destroy(val.gameObject);
+                break;
+            }
+        }
+    }
+
+    /// <summary>
+    /// 音乐暂停
+    /// </summary>
+    /// <param name="isStop">是否暂停</param>
+    public void StopAudio(bool isStop)
+    {
+        foreach (AudioSource val in audioSourceList)
+        {
+            if (isStop && val)
+            {
+                val.Pause();
+            }
+            else if (val)
+            {
+                val.Play();
+            }
+        }
+    }
+
+    /// <summary>
+    /// 判断当前音乐是否存在
+    /// </summary>
+    /// <param name="audioName">音乐名字</param>
+    /// <returns></returns>
+    private bool AudioIsTrue(string audioName)
+    {
+        foreach (AudioSource val in audioSourceList)
+        {
+            if (val && val.clip.name == audioName)
+            {
+                return true;
+            }
+
+        }
+        return false;
+    }
+
+    /// <summary>
+    /// 停止播放某一个音效
+    /// </summary>
+    /// <param name="audioName"></param>
+    private void StopOneShot(string musicName, bool isOneShot)
+    {
+        foreach (AudioSource val in audioSourceList)
+        {
+            if (val && val.clip && val.clip.name == musicName)
+            {
+                val.Stop();
+                val.clip = null;
+                break;
+            }
+        }
+
+        Play(musicName, isOneShot);
+    }
+
+}
diff --git a/Assets/Scripts/Music/AudioSourceManager.cs.meta b/Assets/Scripts/Music/AudioSourceManager.cs.meta
new file mode 100644
index 0000000..40c1981
--- /dev/null
+++ b/Assets/Scripts/Music/AudioSourceManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 25127f6980e3a024d86d7beab218785e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs b/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
index 1e7e957..f2aa107 100644
--- a/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
+++ b/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
@@ -12,43 +12,43 @@
 
 namespace TowerDefense.Affectors
 {
-	/// <summary>
-	/// The common effect for handling firing projectiles to attack
-	/// 
-	/// Requires an ILauncher but it is not automatically added
-	/// Add an ILauncher implementation to this GameObject before you add this script
-	/// </summary>
-	[RequireComponent(typeof(ILauncher))]
-	public class AttackAffector : Affector, ITowerRadiusProvider
-	{
-		/// <summary>
-		/// The projectile used to attack
-		/// </summary>
-		public GameObject projectile;
+    /// <summary>
+    /// The common effect for handling firing projectiles to attack
+    /// 
+    /// Requires an ILauncher but it is not automatically added
+    /// Add an ILauncher implementation to this GameObject before you add this script
+    /// </summary>
+    [RequireComponent(typeof(ILauncher))]
+    public class AttackAffector : Affector, ITowerRadiusProvider
+    {
+        /// <summary>
+        /// The projectile used to attack
+        /// </summary>
+        public GameObject projectile;
 
-		// 
-		protected GameObject projectile1;
-		protected GameObject projectile2;
+        // 
+        protected GameObject projectile1;
+        protected GameObject projectile2;
 
-		/// <summary>
-		/// The list of points to launch the projectiles from
-		/// </summary>
-		public Transform[] projectilePoints;
+        /// <summary>
+        /// The list of points to launch the projectiles from
+        /// </summary>
+        public Transform[] projectilePoints;
 
-		/// <summary>
-		/// The reference to the center point where the tower will search from
-		/// </summary>
-		public Transform epicenter;
+        /// <summary>
+        /// The reference to the center point where the tower will search from
+        /// </summary>
+        public Transform epicenter;
 
-		/// <summary>
-		/// Configuration for when the tower does splash damage
-		/// </summary>
-		public bool isMultiAttack;
+        /// <summary>
+        /// Configuration for when the tower does splash damage
+        /// </summary>
+        public bool isMultiAttack;
 
-		/// <summary>
-		/// 如果是多目标攻击,最多攻击目标
-		/// </summary>
-		public int maxAttackNum = 1;
+        /// <summary>
+        /// 如果是多目标攻击,最多攻击目标
+        /// </summary>
+        public int maxAttackNum = 1;
 
 
         /// <summary>
@@ -57,356 +57,381 @@
         public float fireRate;
 
 
-		/// <summary>
-		/// 是否木属性数据
-		/// </summary>
-		public bool bWoodAffector = false;
+        /// <summary>
+        /// 是否木属性数据
+        /// </summary>
+        public bool bWoodAffector = false;
 
-		/// <summary>
-		/// The audio source to play when firing
-		/// </summary>
-		public RandomAudioSource randomAudioSource;
+        /// <summary>
+        /// The audio source to play when firing
+        /// </summary>
+        public RandomAudioSource randomAudioSource;
 
-		/// <summary>
-		/// Gets the targetter
-		/// </summary>
-		public Targetter towerTargetter;
+        /// <summary>
+        /// Gets the targetter
+        /// </summary>
+        public Targetter towerTargetter;
 
-		/// <summary>
-		/// Color of effect radius visualization
-		/// </summary>
-		public Color radiusEffectColor;
+        /// <summary>
+        /// Color of effect radius visualization
+        /// </summary>
+        public Color radiusEffectColor;
 
-		/// <summary>
-		/// Search condition
-		/// </summary>
-		public Filter searchCondition;
+        /// <summary>
+        /// Search condition
+        /// </summary>
+        public Filter searchCondition;
 
-		/// <summary>
-		/// Fire condition
-		/// </summary>
-		public Filter fireCondition;
+        /// <summary>
+        /// Fire condition
+        /// </summary>
+        public Filter fireCondition;
 
-		/// <summary>
-		/// The reference to the attached launcher
-		/// </summary>
-		protected ILauncher m_Launcher;
+        /// <summary>
+        /// The reference to the attached launcher
+        /// </summary>
+        protected ILauncher m_Launcher;
 
-		/// <summary>
-		/// The time before firing is possible
-		/// </summary>
-		protected float m_FireTimer;
+        /// <summary>
+        /// The time before firing is possible
+        /// </summary>
+        protected float m_FireTimer;
 
-		/// <summary>
-		/// Reference to the current tracked enemy
-		/// </summary>
-		protected Targetable m_TrackingEnemy;
+        /// <summary>
+        /// Reference to the current tracked enemy
+        /// </summary>
+        protected Targetable m_TrackingEnemy;
 
-		/// <summary>
-		/// 处理装弹时间.
-		/// </summary>
-		protected float fillBulletTime = 0.0f;
+        /// <summary>
+        /// 处理装弹时间.
+        /// </summary>
+        protected float fillBulletTime = 0.0f;
 
         /// <summary>
         /// 充能时间
         /// </summary>
         protected float energyCalTime = 0;
-		protected float fInEnergy = 0;
-		protected float fBackupTimer = 0.0f;
-		/// <summary>
-		/// Gets the search rate from the targetter
-		/// </summary>
-		public float searchRate
-		{
-			get { return towerTargetter.searchRate; }
-			set { towerTargetter.searchRate = value; }
-		}
-
-		/// <summary>
-		/// Gets the targetable
-		/// </summary>
-		public Targetable trackingEnemy
-		{
-			get { return m_TrackingEnemy; }
-		}
-
-		/// <summary>
-		/// Gets or sets the attack radius
-		/// </summary>
-		public float effectRadius
-		{
-			get { return towerTargetter.effectRadius; }
-		}
-
-		public Color effectColor 
-		{
-			get { return radiusEffectColor; }
-		}
-
-		public Targetter targetter 
-		{
-			get { return towerTargetter; }
-		}
-
-		/// <summary>
-		/// Initializes the attack affector
-		/// </summary>
-		public override void Initialize(IAlignmentProvider affectorAlignment)
-		{
-			Initialize(affectorAlignment, -1);
-		}
-
-		/// <summary>
-		/// 返回可能存在的Targetter.
-		/// </summary>
-		/// <returns></returns>
-		public override TowerDefense.Targetting.Targetter GetTargetter()
-		{
-			return targetter;
-		}
-
-		/// <summary>
-		/// Initialises the  attack affector with a layer mask
-		/// </summary>
-		public override void Initialize(IAlignmentProvider affectorAlignment, LayerMask mask)
-		{
-			base.Initialize(affectorAlignment, mask);
-			SetUpTimers();
-
-			towerTargetter.ResetTargetter();
-			towerTargetter.alignment = affectorAlignment;
-			towerTargetter.acquiredTarget += OnAcquiredTarget;
-			towerTargetter.lostTarget += OnLostTarget;
-		}
-
-		void OnDestroy()
-		{
-			towerTargetter.acquiredTarget -= OnAcquiredTarget;
-			towerTargetter.lostTarget -= OnLostTarget;
-		}
-
-		void OnLostTarget()
-		{
-			m_TrackingEnemy = null;
-		}
-
-		void OnAcquiredTarget(Targetable acquiredTarget)
-		{
-			m_TrackingEnemy = acquiredTarget;
-		}
-
-		public Damager damagerProjectile
-		{
-			get { return projectile == null ? null : projectile.GetComponent<Damager>(); }
-		}
-
-		public Damager damagerProjectile1
-		{
-			get { return projectile == null ? null : projectile.GetComponent<Damager>(); }
-		}
-
-		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>
-		/// Initialise the RepeatingTimer
-		/// </summary>
-		protected virtual void SetUpTimers()
-		{
-			m_FireTimer = 1 / fireRate;
-			m_Launcher = GetComponent<ILauncher>();
-		}
-
-
-		protected void updateTowerSkillData()
+        protected float fInEnergy = 0;
+        protected float fBackupTimer = 0.0f;
+        /// <summary>
+        /// Gets the search rate from the targetter
+        /// </summary>
+        public float searchRate
         {
-			// 
-			// 预留出来装填子弹的时间.
-			if (fillBulletTime > 0)
-			{
-				fillBulletTime -= Time.deltaTime;
-				if (fillBulletTime <= 0.3f)
-				{
-					if (towerPtr && towerPtr.bulletCtl)
-						towerPtr.bulletCtl.resetToMaxBullet();
-				}
+            get { return towerTargetter.searchRate; }
+            set { towerTargetter.searchRate = value; }
+        }
 
-				if (fillBulletTime <= 0)
-				{
-					fillBulletTime = 0;
-				}
-			}
+        /// <summary>
+        /// Gets the targetable
+        /// </summary>
+        public Targetable trackingEnemy
+        {
+            get { return m_TrackingEnemy; }
+        }
 
-			// 
-			// 充能时间的处理
-			if( towerPtr && towerPtr.energyCtl)
+        /// <summary>
+        /// Gets or sets the attack radius
+        /// </summary>
+        public float effectRadius
+        {
+            get { return towerTargetter.effectRadius; }
+        }
+
+        public Color effectColor
+        {
+            get { return radiusEffectColor; }
+        }
+
+        public Targetter targetter
+        {
+            get { return towerTargetter; }
+        }
+
+        /// <summary>
+        /// Initializes the attack affector
+        /// </summary>
+        public override void Initialize(IAlignmentProvider affectorAlignment)
+        {
+            Initialize(affectorAlignment, -1);
+        }
+
+        /// <summary>
+        /// 返回可能存在的Targetter.
+        /// </summary>
+        /// <returns></returns>
+        public override TowerDefense.Targetting.Targetter GetTargetter()
+        {
+            return targetter;
+        }
+
+        /// <summary>
+        /// Initialises the  attack affector with a layer mask
+        /// </summary>
+        public override void Initialize(IAlignmentProvider affectorAlignment, LayerMask mask)
+        {
+            base.Initialize(affectorAlignment, mask);
+            SetUpTimers();
+
+            towerTargetter.ResetTargetter();
+            towerTargetter.alignment = affectorAlignment;
+            towerTargetter.acquiredTarget += OnAcquiredTarget;
+            towerTargetter.lostTarget += OnLostTarget;
+			GetAudioEnum();
+        }
+        private AudioEnum audioEnum;//当前音乐的种类
+
+        void GetAudioEnum()
+        {
+            if (transform.parent.name.StartsWith("GrowUpTower"))
             {
-				if( this.fInEnergy <= 0)
+                //火元素
+                audioEnum = AudioEnum.FireTAttack;
+            }
+            else if (transform.parent.name.StartsWith("BlinkTower"))
+            {
+                //木元素
+                audioEnum = AudioEnum.WoodTAttack;
+            }
+            else if (transform.parent.name.StartsWith("CopyCatTower"))
+            {
+                //水元素
+                audioEnum = AudioEnum.WaterTAttack;
+            }
+        }
+
+        void OnDestroy()
+        {
+            towerTargetter.acquiredTarget -= OnAcquiredTarget;
+            towerTargetter.lostTarget -= OnLostTarget;
+        }
+
+        void OnLostTarget()
+        {
+            m_TrackingEnemy = null;
+        }
+
+        void OnAcquiredTarget(Targetable acquiredTarget)
+        {
+            m_TrackingEnemy = acquiredTarget;
+        }
+
+        public Damager damagerProjectile
+        {
+            get { return projectile == null ? null : projectile.GetComponent<Damager>(); }
+        }
+
+        public Damager damagerProjectile1
+        {
+            get { return projectile == null ? null : projectile.GetComponent<Damager>(); }
+        }
+
+        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>
+        /// Initialise the RepeatingTimer
+        /// </summary>
+        protected virtual void SetUpTimers()
+        {
+            m_FireTimer = 1 / fireRate;
+            m_Launcher = GetComponent<ILauncher>();
+        }
+
+
+        protected void updateTowerSkillData()
+        {
+            // 
+            // 预留出来装填子弹的时间.
+            if (fillBulletTime > 0)
+            {
+                fillBulletTime -= Time.deltaTime;
+                if (fillBulletTime <= 0.3f)
                 {
-					this.energyCalTime += Time.deltaTime;
-					float process = energyCalTime % 11.0f;
-					int proint = (int)Math.Floor(process);
-					proint += towerPtr.uiProOffset;
-					towerPtr.energyCtl.SetEnergyProcessFloat( process );
-					if (proint == 10)
-					{
-						fInEnergy = 5.0f;
+                    if (towerPtr && towerPtr.bulletCtl)
+                        towerPtr.bulletCtl.resetToMaxBullet();
+                }
 
-						// 设置多倍攻击速度
-						fBackupTimer = m_FireTimer;
-						m_FireTimer = m_FireTimer / 3.0f;
+                if (fillBulletTime <= 0)
+                {
+                    fillBulletTime = 0;
+                }
+            }
 
-						towerPtr.uiProOffset = 0;
-						towerPtr.PlayEnergyEffect(true);
-					}
+            // 
+            // 充能时间的处理
+            if (towerPtr && towerPtr.energyCtl)
+            {
+                if (this.fInEnergy <= 0)
+                {
+                    this.energyCalTime += Time.deltaTime;
+                    float process = energyCalTime % 11.0f;
+                    int proint = (int)Math.Floor(process);
+                    proint += towerPtr.uiProOffset;
+                    towerPtr.energyCtl.SetEnergyProcessFloat(process);
+                    if (proint == 10)
+                    {
+                        fInEnergy = 5.0f;
+
+                        // 设置多倍攻击速度
+                        fBackupTimer = m_FireTimer;
+                        m_FireTimer = m_FireTimer / 3.0f;
+
+                        towerPtr.uiProOffset = 0;
+                        towerPtr.PlayEnergyEffect(true);
+                    }
                 }
                 else
                 {
-					fInEnergy -= Time.deltaTime;
-					if( fInEnergy <= 0)
+                    fInEnergy -= Time.deltaTime;
+                    if (fInEnergy <= 0)
                     {
                         EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.FireTowerChargeEnd);
-						fInEnergy = 0.0f;
-						this.energyCalTime = 0.0f;	
-						towerPtr.energyCtl.SetEnergyProgress(0);
+                        fInEnergy = 0.0f;
+                        this.energyCalTime = 0.0f;
+                        towerPtr.energyCtl.SetEnergyProgress(0);
 
-						// 恢复正常攻击速度 
-						m_FireTimer = fBackupTimer;
+                        // 恢复正常攻击速度 
+                        m_FireTimer = fBackupTimer;
 
-						towerPtr.PlayEnergyEffect(false);
+                        towerPtr.PlayEnergyEffect(false);
 
-					}
-				}
+                    }
+                }
 
-			}
-		}
+            }
+        }
 
-		/// <summary>
-		/// Update the timers
-		/// </summary>
-		protected virtual void Update()
-		{
-			// 处理当前Affector所在Tower对应的技能
-			updateTowerSkillData();
+        /// <summary>
+        /// Update the timers
+        /// </summary>
+        protected virtual void Update()
+        {
+            // 处理当前Affector所在Tower对应的技能
+            updateTowerSkillData();
 
-			m_FireTimer -= Time.deltaTime;
-			if( trackingEnemy == null )
-				m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector);
-			if (trackingEnemy != null && m_FireTimer <= 0.0f)
-			{
-				OnFireTimer();
-				m_FireTimer = 1 / fireRate;
-
-				// 多倍攻速:
-				if (fInEnergy > 0.0f)
-					m_FireTimer = m_FireTimer / 3.0f;
-			}
-		}
-
-		/// <summary>
-		/// Fired at every poll of the fire rate timer
-		/// </summary>
-		protected virtual void OnFireTimer()
-		{
-			if (fireCondition != null)
-			{
-				if (!fireCondition())
-				{
-					return;
-				}
-			}
-			FireProjectile();
-		}
-
-		/// <summary>
-		/// Common logic when attacking
-		/// 调用攻击的核心函数,由这个函数发起真正的攻击,多目标或者单目标
-		/// </summary>
-		protected virtual void FireProjectile()
-		{
-			// 不再处理多子弹攻击,确保只有一个弹道
-			isMultiAttack = false; 
-			m_TrackingEnemy = targetter.GetTarget( waveLineID, bWoodAffector );
-			if ( (m_TrackingEnemy == null) || (fillBulletTime>0) )
-			{
-				if (this.towerPtr) 
-					towerPtr.setTowerState(false);
-				return;
-			}else
+            m_FireTimer -= Time.deltaTime;
+            if (trackingEnemy == null)
+                m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector);
+            if (trackingEnemy != null && m_FireTimer <= 0.0f)
             {
-				if (this.towerPtr) 
-					towerPtr.setTowerState(true);
+                OnFireTimer();
+                m_FireTimer = 1 / fireRate;
+
+                // 多倍攻速:
+                if (fInEnergy > 0.0f)
+                    m_FireTimer = m_FireTimer / 3.0f;
+            }
+        }
+
+        /// <summary>
+        /// Fired at every poll of the fire rate timer
+        /// </summary>
+        protected virtual void OnFireTimer()
+        {
+            if (fireCondition != null)
+            {
+                if (!fireCondition())
+                {
+                    return;
+                }
+            }
+            FireProjectile();
+        }
+
+        /// <summary>
+        /// Common logic when attacking
+        /// 调用攻击的核心函数,由这个函数发起真正的攻击,多目标或者单目标
+        /// </summary>
+        protected virtual void FireProjectile()
+        {
+            // 不再处理多子弹攻击,确保只有一个弹道
+            isMultiAttack = false;
+            m_TrackingEnemy = targetter.GetTarget(waveLineID, bWoodAffector);
+            if ((m_TrackingEnemy == null) || (fillBulletTime > 0))
+            {
+                if (this.towerPtr)
+                    towerPtr.setTowerState(false);
+                return;
+            }
+            else
+            {
+                if (this.towerPtr)
+                    towerPtr.setTowerState(true);
             }
 
-			// 
-			// 处理子弹充能相关的内容
-			if( towerPtr && (towerPtr.bulletCtl != null))
+            // 
+            // 处理子弹充能相关的内容
+            if (towerPtr && (towerPtr.bulletCtl != null))
             {
-				int bnum = towerPtr.bulletCtl.decBullet();
-				// 
-				if (bnum == 0)
-				{
-					damagerProjectile.damageMulti = 5.0f;	
-					fillBulletTime = 2.0f;
-				}
+                int bnum = towerPtr.bulletCtl.decBullet();
+                // 
+                if (bnum == 0)
+                {
+                    damagerProjectile.damageMulti = 5.0f;
+                    fillBulletTime = 2.0f;
+                }
             }
 
-			if (isMultiAttack)
-			{
-				List<Targetable> enemies = towerTargetter.GetAllTargets();
-				if( (enemies != null)&&(Targetter.bSearchTarget) )
-					m_Launcher.Launch(enemies, projectile, projectilePoints,this.maxAttackNum);
-			}
-			else
-			{
-				if(Targetter.bSearchTarget )
-					m_Launcher.Launch(m_TrackingEnemy, damagerProjectile.gameObject, projectilePoints);
-			}
-			if (randomAudioSource != null)
-			{
-				if( Targetter.bSearchTarget )
-					randomAudioSource.PlayRandomClip();
-			}
-		}
+            if (isMultiAttack)
+            {
+                List<Targetable> enemies = towerTargetter.GetAllTargets();
+                if ((enemies != null) && (Targetter.bSearchTarget))
+                    m_Launcher.Launch(enemies, projectile, projectilePoints, this.maxAttackNum);
+            }
+            else
+            {
+                if (Targetter.bSearchTarget)
+                {
+                    m_Launcher.Launch(m_TrackingEnemy, damagerProjectile.gameObject, projectilePoints);
+                    AudioSourceManager.Ins.Play(audioEnum);
+                }
+            }
+            if (randomAudioSource != null)
+            {
+                if (Targetter.bSearchTarget)
+                    randomAudioSource.PlayRandomClip();
+            }
+        }
 
-		/// <summary>
-		/// A delegate to compare distances of components
-		/// </summary>
-		/// <param name="first"></param>
-		/// <param name="second"></param>
-		protected virtual int ByDistance(Targetable first, Targetable second)
-		{
-			float firstSqrMagnitude = Vector3.SqrMagnitude(first.position - epicenter.position);
-			float secondSqrMagnitude = Vector3.SqrMagnitude(second.position - epicenter.position);
-			return firstSqrMagnitude.CompareTo(secondSqrMagnitude);
-		}
+        /// <summary>
+        /// A delegate to compare distances of components
+        /// </summary>
+        /// <param name="first"></param>
+        /// <param name="second"></param>
+        protected virtual int ByDistance(Targetable first, Targetable second)
+        {
+            float firstSqrMagnitude = Vector3.SqrMagnitude(first.position - epicenter.position);
+            float secondSqrMagnitude = Vector3.SqrMagnitude(second.position - epicenter.position);
+            return firstSqrMagnitude.CompareTo(secondSqrMagnitude);
+        }
 
 #if UNITY_EDITOR
-		/// <summary>
-		/// Draws the search area
-		/// </summary>
-		void OnDrawGizmosSelected()
-		{
-			Gizmos.DrawWireSphere(epicenter.position, towerTargetter.effectRadius);
-		}
+        /// <summary>
+        /// Draws the search area
+        /// </summary>
+        void OnDrawGizmosSelected()
+        {
+            Gizmos.DrawWireSphere(epicenter.position, towerTargetter.effectRadius);
+        }
 #endif
-	}
+    }
 
-	/// <summary>
-	/// A delegate for boolean calculation logic
-	/// </summary>
-	public delegate bool Filter();
+    /// <summary>
+    /// A delegate for boolean calculation logic
+    /// </summary>
+    public delegate bool Filter();
 }
\ No newline at end of file
diff --git a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs
index 412cfb7..7f8f1d1 100644
--- a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs
+++ b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs
@@ -154,6 +154,9 @@
             m_GameUI.TryMoveGhost(pointer, false);
 
             this.isInDragState = true;
+            AudioSourceManager.Ins.Play(AudioEnum.DragTower);
+
+            //Debug.Log("开始拖拽");
         }
 
         protected override void OnDrag(PointerActionInfo pointer)
@@ -168,9 +171,15 @@
         {
             // EndDrag 只能放置相关的GhostTower.
             if (this.isInDragState)
-                m_GameUI.onEndTowerDrag(pointer);
+            {
+                AudioSourceManager.Ins.Play(AudioEnum.PutTower);
+            }
+            m_GameUI.onEndTowerDrag(pointer);
 
             this.isInDragState = false;
+
+            //Debug.Log("结束拖拽");
+
         }
 
         /// <summary>
diff --git a/Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs
index b3cc483..988f0cf 100644
--- a/Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs
+++ b/Assets/Scripts/TowerDefense/Level/EndlessWaveLineManager.cs
@@ -60,6 +60,8 @@
             ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>();
         ps.transform.position = EndlessLevelManager.instance.WaveManager.GetWaveEndPos(id);
         ps.Play();
+        AudioSourceManager.Ins.Play(AudioEnum.FireSkill);
+
         Destroy(obj, ps.main.duration);
     }
 
@@ -78,6 +80,8 @@
             ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>();
         ps.transform.position = pos;
         ps.Play();
+        AudioSourceManager.Ins.Play(AudioEnum.LightningSkill);
+
         Destroy(obj, ps.main.duration);
     }
 
diff --git a/Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs b/Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs
index 3fab292..daaf3bb 100644
--- a/Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs
+++ b/Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs
@@ -60,6 +60,8 @@
 
         public void OnClick()
         {
+            AudioSourceManager.Ins.Play(AudioEnum.UI);
+
             isShow = !isShow;
 
             if (isShow) Refresh();
diff --git a/Assets/Scripts/TowerDefense/UI/EndGameScreen.cs b/Assets/Scripts/TowerDefense/UI/EndGameScreen.cs
index ca551a6..d0bdd0b 100644
--- a/Assets/Scripts/TowerDefense/UI/EndGameScreen.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndGameScreen.cs
@@ -246,10 +246,10 @@
 		protected void Victory()
 		{
 			OpenEndGameScreen(true);
-			if ((victorySound != null) && (audioSource != null))
-			{
-				audioSource.PlayOneShot(victorySound);
-			}
+			// if ((victorySound != null) && (audioSource != null))
+			// {
+			// 	audioSource.PlayOneShot(victorySound);
+			// }
 			//background.color = winBackgroundColor;
 
 			//first check if there are any more levels after this one
@@ -294,10 +294,10 @@
 			//	nextLevelButton.enabled = false;
 			//	nextLevelButton.gameObject.SetActive(false);
 			//}
-			if ((defeatSound != null) && (audioSource != null))
-			{
-				audioSource.PlayOneShot(defeatSound);
-			}
+			// if ((defeatSound != null) && (audioSource != null))
+			// {
+			// 	audioSource.PlayOneShot(defeatSound);
+			// }
 			//background.color = loseBackgroundColor;
 		}
 
diff --git a/Assets/Scripts/TowerDefense/UI/EndlessBossHPManager.cs b/Assets/Scripts/TowerDefense/UI/EndlessBossHPManager.cs
index 10feb0a..30d83a6 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessBossHPManager.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessBossHPManager.cs
@@ -139,6 +139,10 @@
         public void UpdateWave(int wave)
         {
             WaveNumText.text = $"x{wave}";
+            if (wave == 0)
+            {
+                AudioSourceManager.Ins.Play(AudioEnum.BossDie);
+            }
         }
 
         /// <summary>
diff --git a/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs b/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs
index 0780712..37efa27 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs
@@ -50,6 +50,9 @@
             {
                 IconList[i].Reset();
             }
+
+            AudioSourceManager.Ins?.Play(AudioEnum.BuffAppear);
+
         }
 
         
@@ -109,6 +112,8 @@
 
             int index = SelectedIndex;
 
+            AudioSourceManager.Ins.Play(AudioEnum.UI);
+
             HideBuffUI();
 
             if (BuffSelectCompleted != null)
diff --git a/Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs b/Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs
index 1377390..45fa4ea 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs
@@ -126,8 +126,8 @@
         private void ShowPanel()
         {
             OpenEndGameScreen(true);
-            if (VictoryAudio != null && AudioSource != null)
-                AudioSource.PlayOneShot(VictoryAudio);
+            // if (VictoryAudio != null && AudioSource != null)
+            //     AudioSource.PlayOneShot(VictoryAudio);
         }
 
         /// <summary>
diff --git a/Assets/Scripts/TowerDefense/UI/EndlessSettlementPropList.cs b/Assets/Scripts/TowerDefense/UI/EndlessSettlementPropList.cs
index 25d8d70..70e749d 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessSettlementPropList.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessSettlementPropList.cs
@@ -74,6 +74,8 @@
 
         private void StartLater()
         {
+            AudioSourceManager.Ins.Play(AudioEnum.End);
+
             StartCoroutine(ShowSlow());
         }
 
diff --git a/Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs b/Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs
index 02169e4..8598e42 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs
@@ -29,6 +29,8 @@
 
         public void OnClick()
         {
+            AudioSourceManager.Ins.Play(AudioEnum.UI);
+
             SwitchSpeed();
         }
 
diff --git a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
index 2dcf5cb..e07d09d 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
@@ -85,6 +85,8 @@
         GameConfig.EndlessOpenAttackTowerCount = 0;
         GameConfig.EndlessBuyTowerCount = 0;
         GameConfig.EndlessPortUseSkillTowerCount = 0;
+
+        AudioSourceManager.Ins.Play(AudioEnum.BGM2);
     }
 
     private void InitSDK()
@@ -93,6 +95,10 @@
             gameObject.AddComponent<TDAA_SDKManager>();
         TDAA_SDKManager.Ins.ArriveBattle();//埋点
         TDAA_SDKManager.Ins.Statistics(4);//埋点
+
+        if (AudioSourceManager.Ins == null)
+            gameObject.AddComponent<AudioSourceManager>();
+
     }
 
     /// <summary>
diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
index db5f6e6..d1b8668 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
+++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -1455,7 +1455,8 @@
         /// </summary>
         protected void disableRandomTowerBtn()
         {
-            randomTowerBtn.interactable = false;
+            randomTowerBtn.GetComponent<EndlessRandomTower>().ChangeBtnClick();
+            //randomTowerBtn.interactable = false;
             if (towerPriceText)
             {
                 towerPriceText.color = new Color(0.5f, 0.5f, 0.5f);
@@ -1477,7 +1478,10 @@
                 towerPriceText.color = new Color(1.0f, 1.0f, 1.0f);
 
             if (randomTowerBtn)
-                randomTowerBtn.interactable = true;
+            {
+                randomTowerBtn.GetComponent<EndlessRandomTower>().ChangeBtnClickNormal();
+                //randomTowerBtn.interactable = true;
+            }
             tdBuyDisable = false;
         }
 
diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs
index b0a4e34..30f09ec 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs
+++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs
@@ -88,7 +88,25 @@
         bCdTimeStart = false;
 
         cdTimeBg.gameObject.SetActive(false);
+
         cdTimeText.text = "";
+
+        randomBtn.onClick.AddListener(onClick);
+
+    }
+
+    public void ChangeBtnClickNormal()
+    {
+        randomBtn.onClick.RemoveAllListeners();
+        randomBtn.onClick.AddListener(onClick);
+    }
+    public void ChangeBtnClick()
+    {
+        randomBtn.onClick.RemoveAllListeners();
+        randomBtn.onClick.AddListener(() =>
+        {
+            AudioSourceManager.Ins.Play(AudioEnum.UIDisable);
+        });
     }
 
     /// <summary>
@@ -280,7 +298,14 @@
     /// </summary>
     public void onClick()
     {
-        if (GameConfig.IsNewbie && !GameConfig.CanBuyNewTower) return;
+        if (GameConfig.IsNewbie && !GameConfig.CanBuyNewTower)
+        {
+            AudioSourceManager.Ins.Play(AudioEnum.UIDisable);
+
+            return;
+        }
+
+        AudioSourceManager.Ins.Play(AudioEnum.UI);
 
         // 还没到技能时间,忽略掉技能宝石
         Tower newTower = GetRandomTower(EndlessUIStart.instance.GameStartTime <= SKILL_TOWER_TIME);
@@ -295,7 +320,7 @@
     /// 随机找一个空白位置放置塔防
     /// </summary>
     /// <param name="tower"></param>
-    public bool RandomPlaceTower(Tower tower, int level = -1, int cost = -1, int posx = - 1, int posy = -1)
+    public bool RandomPlaceTower(Tower tower, int level = -1, int cost = -1, int posx = -1, int posy = -1)
     {
         EndlessGameUI gameUI = EndlessGameUI.instance;
 
diff --git a/Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs b/Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs
index 1783781..7f8bf73 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs
+++ b/Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs
@@ -59,6 +59,8 @@
 
         public void OnClick()
         {
+            AudioSourceManager.Ins.Play(AudioEnum.ChooseBuff);
+
             if (OnSelectBuffCompleted != null)
                 OnSelectBuffCompleted(Index);
         }
diff --git a/Assets/Scripts/TowerDefense/UI/MainMenuScene.cs b/Assets/Scripts/TowerDefense/UI/MainMenuScene.cs
index e98818f..857ac34 100644
--- a/Assets/Scripts/TowerDefense/UI/MainMenuScene.cs
+++ b/Assets/Scripts/TowerDefense/UI/MainMenuScene.cs
@@ -70,6 +70,8 @@
     /// </summary>
     public void cooperateBtnClick()
     {
+        AudioSourceManager.Ins.Play(AudioEnum.UI);
+
         combatBtn.transform.DOKill();
         combatBtn.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
         this.SafelyUnsubscribe();
@@ -83,6 +85,8 @@
     /// </summary>
     public void StartGame()
     {
+        AudioSourceManager.Ins.Play(AudioEnum.UI);
+
         combatBtn.transform.DOKill();
         combatBtn.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
 

--
Gitblit v1.9.1