完善PVE界面逻辑,使用正式的界面资源
解决bug:1.打掉小怪没有获得金币 2.摧毁塔位 塔没有消失
5 files renamed
5 files copied
1 files deleted
19 files added
66 files modified
13145 ■■■■■ changed files
And/GemBattle.apk patch | view | raw | blame | history
Assets/Materials/PVE/01效果图-PVE战斗.jpg.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/03效果图-选择完成.jpg.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/04效果图-结算.jpg.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/05标注.jpg.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/06标注.jpg.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/07标注.jpg.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/PVEBg.png patch | view | raw | blame | history
Assets/Materials/PVE/PVEBg.png.meta 8 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/RewardInfo.png patch | view | raw | blame | history
Assets/Materials/PVE/RewardInfo.png.meta 42 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/buffMask.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/check.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/diamond.png patch | view | raw | blame | history
Assets/Materials/PVE/diamond.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/drop.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/line.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/propDi_0.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/propDi_1.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/propDi_2.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/propDi_3.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/speed_1.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/speed_2.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/treasure_0.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/treasure_1.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/treasure_2.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Materials/PVE/victoryTitle.png.meta 40 ●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/BuffIcon.prefab 500 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/BuffIcon.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/PropIcon.prefab 189 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/PropIcon.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Scenes/Levels/Battle/Endless.unity 4196 ●●●● patch | view | raw | blame | history
Assets/Scenes/Levels/Battle/GemBattle.unity 20 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Data/EndlessBuffData.cs 23 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Data/EndlessPortData.cs 20 ●●●● patch | view | raw | blame | history
Assets/Scripts/Enum/EndlessBuffSelectState.cs 19 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Enum/EndlessBuffSelectState.cs.meta 2 ●●● patch | view | raw | blame | history
Assets/Scripts/Json/JsonDataCenter.cs 2 ●●● patch | view | raw | blame | history
Assets/Scripts/Net/NetExtends/Common.cs 2068 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Net/NetExtends/Game.cs 4156 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Net/NetExtends/NetMapping.cs 56 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Net/NetExtends/Opcode.cs 48 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Net/NetExtends/Table.cs 181 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Economy/LootDrop.cs 165 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs 46 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Level/EndlessWave.cs 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs 51 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs.meta 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs 101 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs.meta 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs 106 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs.meta 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs 42 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs.meta 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs 33 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs 31 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs 37 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs 96 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs.meta 2 ●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/donateshop.json 1 ●●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/donateshop.json.meta 7 ●●●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/endless_buff.json 2 ●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/endless_enemy.json 2 ●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/endless_port.json 2 ●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/notice.json 1 ●●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/notice.json.meta 7 ●●●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/scoreshop.json 1 ●●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/scoreshop.json.meta 7 ●●●●● patch | view | raw | blame | history
GemBattle/宝石塔防_Data/Managed/Assembly-CSharp-firstpass.dll patch | view | raw | blame | history
GemBattle/宝石塔防_Data/Managed/Assembly-CSharp.dll patch | view | raw | blame | history
GemBattle/宝石塔防_Data/Managed/MoreMountains.NiceVibrations.Demos.dll patch | view | raw | blame | history
GemBattle/宝石塔防_Data/Managed/MoreMountains.NiceVibrations.Haptics.dll patch | view | raw | blame | history
GemBattle/宝石塔防_Data/Managed/MoreMountains.NiceVibrations.dll patch | view | raw | blame | history
GemBattle/宝石塔防_Data/Managed/Unity.TextMeshPro.dll patch | view | raw | blame | history
GemBattle/宝石塔防_Data/Managed/Unity.Timeline.dll patch | view | raw | blame | history
GemBattle/宝石塔防_Data/Managed/UnityEngine.UI.dll patch | view | raw | blame | history
GemBattle/宝石塔防_Data/StreamingAssets/Table/donateshop.json 1 ●●●● patch | view | raw | blame | history
GemBattle/宝石塔防_Data/StreamingAssets/Table/endless_buff.json 2 ●●● patch | view | raw | blame | history
GemBattle/宝石塔防_Data/StreamingAssets/Table/endless_enemy.json 2 ●●● patch | view | raw | blame | history
GemBattle/宝石塔防_Data/StreamingAssets/Table/endless_port.json 2 ●●● patch | view | raw | blame | history
GemBattle/宝石塔防_Data/StreamingAssets/Table/notice.json 1 ●●●● patch | view | raw | blame | history
GemBattle/宝石塔防_Data/StreamingAssets/Table/scoreshop.json 1 ●●●● patch | view | raw | blame | history
GemBattle/宝石塔防_Data/globalgamemanagers patch | view | raw | blame | history
GemBattle/宝石塔防_Data/globalgamemanagers.assets patch | view | raw | blame | history
GemBattle/宝石塔防_Data/level0 patch | view | raw | blame | history
GemBattle/宝石塔防_Data/level1 patch | view | raw | blame | history
GemBattle/宝石塔防_Data/level2 patch | view | raw | blame | history
GemBattle/宝石塔防_Data/level3 patch | view | raw | blame | history
GemBattle/宝石塔防_Data/resources.assets patch | view | raw | blame | history
GemBattle/宝石塔防_Data/sharedassets0.assets patch | view | raw | blame | history
GemBattle/宝石塔防_Data/sharedassets1.assets patch | view | raw | blame | history
GemBattle/宝石塔防_Data/sharedassets2.assets patch | view | raw | blame | history
GemBattle/宝石塔防_Data/sharedassets2.assets.resS patch | view | raw | blame | history
GemBattle/宝石塔防_Data/sharedassets3.assets patch | view | raw | blame | history
GemBattle/宝石塔防_Data/sharedassets3.assets.resS patch | view | raw | blame | history
And/GemBattle.apk
Binary files differ
Assets/Materials/PVE/01效果图-PVE战斗.jpg.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/03效果图-选择完成.jpg.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/04效果图-结算.jpg.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/05标注.jpg.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/06标注.jpg.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/07标注.jpg.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/PVEBg.png

Assets/Materials/PVE/PVEBg.png.meta
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -89,7 +89,7 @@
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 4
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
@@ -103,7 +103,7 @@
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/RewardInfo.png

Assets/Materials/PVE/RewardInfo.png.meta
File was renamed from Assets/Materials/PVE/buffInfo.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,24 +35,24 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteBorder: {x: 39, y: 46, z: 51, w: 42}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/buffMask.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/check.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/diamond.png

Assets/Materials/PVE/diamond.png.meta
File was renamed from Assets/Materials/PVE/图标04.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/drop.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/line.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/propDi_0.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/propDi_1.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/propDi_2.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/propDi_3.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/speed_1.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/speed_2.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/treasure_0.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/treasure_1.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/treasure_2.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Materials/PVE/victoryTitle.png.meta
@@ -6,7 +6,7 @@
  serializedVersion: 11
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    enableMipMap: 0
    sRGBTexture: 1
    linearTexture: 0
    fadeOut: 0
@@ -35,13 +35,13 @@
    filterMode: -1
    aniso: -1
    mipBias: -100
    wrapU: -1
    wrapV: -1
    wrapU: 1
    wrapV: 1
    wrapW: -1
  nPOTScale: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
@@ -50,9 +50,9 @@
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 1
  alphaIsTransparency: 0
  alphaIsTransparency: 1
  spriteTessellationDetail: -1
  textureType: 0
  textureType: 8
  textureShape: 1
  singleChannelComponent: 0
  maxTextureSizeSet: 0
@@ -73,13 +73,37 @@
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 2048
    resizeAlgorithm: 0
    textureFormat: 34
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    spriteID: 5e97eb03825dee720800000000000000
    internalID: 0
    vertices: []
    indices: 
Assets/Prefabs/UI/BuffIcon.prefab
New file
@@ -0,0 +1,500 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &52827698229886892
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 3580160415418532223}
  - component: {fileID: 4214714758741971458}
  - component: {fileID: 6037807312347287293}
  m_Layer: 5
  m_Name: Check
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &3580160415418532223
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 52827698229886892}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2534349791647881055}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 203, y: 150}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4214714758741971458
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 52827698229886892}
  m_CullTransparentMesh: 0
--- !u!114 &6037807312347287293
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 52827698229886892}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_Sprite: {fileID: 21300000, guid: 1f5391d94c7332748836aee38008902f, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &2515353736330966855
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2515353736330966852}
  - component: {fileID: 2515353736330966874}
  - component: {fileID: 2515353736330966853}
  m_Layer: 5
  m_Name: Icon
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2515353736330966852
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2515353736330966855}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2534349791647881055}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 250, y: 250}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2515353736330966874
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2515353736330966855}
  m_CullTransparentMesh: 0
--- !u!114 &2515353736330966853
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2515353736330966855}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_Sprite: {fileID: 21300000, guid: ce200e369ceee4c4aaca2de879512bc7, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &2515353736340248142
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2515353736340248143}
  - component: {fileID: 2515353736340248141}
  - component: {fileID: 2515353736340248140}
  m_Layer: 5
  m_Name: Name
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2515353736340248143
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2515353736340248142}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2534349791647881055}
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 1, y: -167}
  m_SizeDelta: {x: 300, y: 40}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2515353736340248141
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2515353736340248142}
  m_CullTransparentMesh: 0
--- !u!114 &2515353736340248140
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2515353736340248142}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 0.5137255, g: 0.70980394, 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_FontData:
    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
    m_FontSize: 34
    m_FontStyle: 1
    m_BestFit: 0
    m_MinSize: 0
    m_MaxSize: 40
    m_Alignment: 4
    m_AlignByGeometry: 0
    m_RichText: 1
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 1
    m_LineSpacing: 1
  m_Text: "\u5BD2\u51B0\u6C14\u606F"
--- !u!1 &2604476859435101365
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 2534349791647881055}
  - component: {fileID: 8452826127380244719}
  - component: {fileID: 4678849578644363807}
  m_Layer: 5
  m_Name: BuffIcon
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &2534349791647881055
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2604476859435101365}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 2515353736330966852}
  - {fileID: 5826419887233570580}
  - {fileID: 3580160415418532223}
  - {fileID: 2515353736340248143}
  - {fileID: 65437293693251250}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 100, y: 100}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &8452826127380244719
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2604476859435101365}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Navigation:
    m_Mode: 3
    m_SelectOnUp: {fileID: 0}
    m_SelectOnDown: {fileID: 0}
    m_SelectOnLeft: {fileID: 0}
    m_SelectOnRight: {fileID: 0}
  m_Transition: 1
  m_Colors:
    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
    m_ColorMultiplier: 1
    m_FadeDuration: 0.1
  m_SpriteState:
    m_HighlightedSprite: {fileID: 0}
    m_PressedSprite: {fileID: 0}
    m_SelectedSprite: {fileID: 0}
    m_DisabledSprite: {fileID: 0}
  m_AnimationTriggers:
    m_NormalTrigger: Normal
    m_HighlightedTrigger: Highlighted
    m_PressedTrigger: Pressed
    m_SelectedTrigger: Selected
    m_DisabledTrigger: Disabled
  m_Interactable: 1
  m_TargetGraphic: {fileID: 2515353736330966853}
  m_OnClick:
    m_PersistentCalls:
      m_Calls:
      - m_Target: {fileID: 0}
        m_TargetAssemblyTypeName: KTGMGemClient.SelectBuff, 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
--- !u!114 &4678849578644363807
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 2604476859435101365}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9a92c216c3d4e97459299f45fc451060, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  Icon: {fileID: 2515353736330966853}
  BgMask: {fileID: 2566267208910760382}
  Check: {fileID: 6037807312347287293}
  Name: {fileID: 2515353736340248140}
  Effect: {fileID: 7120449464389048921}
  Index: 0
--- !u!1 &4055937924103121589
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 65437293693251250}
  - component: {fileID: 4695899768489853799}
  - component: {fileID: 7120449464389048921}
  m_Layer: 5
  m_Name: Effect
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &65437293693251250
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4055937924103121589}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2534349791647881055}
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 1, y: -210}
  m_SizeDelta: {x: 300, y: 30}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4695899768489853799
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4055937924103121589}
  m_CullTransparentMesh: 0
--- !u!114 &7120449464389048921
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 4055937924103121589}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 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_FontData:
    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
    m_FontSize: 24
    m_FontStyle: 1
    m_BestFit: 0
    m_MinSize: 0
    m_MaxSize: 40
    m_Alignment: 1
    m_AlignByGeometry: 0
    m_RichText: 0
    m_HorizontalOverflow: 0
    m_VerticalOverflow: 1
    m_LineSpacing: 1
  m_Text: "\u6C34\u7CBE\u7075\u51CF\u901F\u6548\u679C+10%"
--- !u!1 &9100461940730660670
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 5826419887233570580}
  - component: {fileID: 3356571130069160499}
  - component: {fileID: 2566267208910760382}
  m_Layer: 5
  m_Name: Mask
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &5826419887233570580
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9100461940730660670}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 2534349791647881055}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 250, y: 250}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3356571130069160499
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9100461940730660670}
  m_CullTransparentMesh: 0
--- !u!114 &2566267208910760382
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 9100461940730660670}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_Sprite: {fileID: 21300000, guid: 943b239aee2923444ad70adc346c69b5, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
Assets/Prefabs/UI/BuffIcon.prefab.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e8b656b384ec06b47bb54c7fd04e1447
PrefabImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Prefabs/UI/PropIcon.prefab
New file
@@ -0,0 +1,189 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &965724004192137757
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 9079844722132429016}
  - component: {fileID: 6103026001546800385}
  - component: {fileID: 4896144283322013574}
  m_Layer: 5
  m_Name: Bg
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &9079844722132429016
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 965724004192137757}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6677654566162760697}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 134, y: 134}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6103026001546800385
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 965724004192137757}
  m_CullTransparentMesh: 0
--- !u!114 &4896144283322013574
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 965724004192137757}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_Sprite: {fileID: 21300000, guid: 7452f72431e39024ea61c77c64dea0be, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &1730832437564531912
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6677654566162760697}
  m_Layer: 5
  m_Name: PropIcon
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6677654566162760697
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1730832437564531912}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 9079844722132429016}
  - {fileID: 1096365539966205729}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: -241, y: 179}
  m_SizeDelta: {x: 134, y: 134}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &3381600331859814444
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1096365539966205729}
  - component: {fileID: 1827184857845691517}
  - component: {fileID: 3587367938846590477}
  m_Layer: 5
  m_Name: Icon
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &1096365539966205729
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3381600331859814444}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6677654566162760697}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 134, y: 134}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1827184857845691517
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3381600331859814444}
  m_CullTransparentMesh: 0
--- !u!114 &3587367938846590477
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 3381600331859814444}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_Sprite: {fileID: 21300000, guid: 38a3413ce7ebb794788cadf0b86b9a45, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
Assets/Prefabs/UI/PropIcon.prefab.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 687aa9f504027364981b0ab60ced93ab
PrefabImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Scenes/Levels/Battle/Endless.unity
Diff too large
Assets/Scenes/Levels/Battle/GemBattle.unity
@@ -1653,7 +1653,7 @@
  - {fileID: 1776264327}
  - {fileID: 512550108}
  m_Father: {fileID: 925045745}
  m_RootOrder: 4
  m_RootOrder: 9
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
@@ -4579,7 +4579,7 @@
  m_Children:
  - {fileID: 1172682253}
  m_Father: {fileID: 925045745}
  m_RootOrder: 1
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
@@ -4964,7 +4964,7 @@
  - {fileID: 1457595363}
  - {fileID: 1810904458}
  m_Father: {fileID: 925045745}
  m_RootOrder: 8
  m_RootOrder: 7
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 1, y: 1}
@@ -5901,7 +5901,7 @@
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 925045745}
  m_RootOrder: 9
  m_RootOrder: 8
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
@@ -8245,12 +8245,14 @@
  m_Children:
  - {fileID: 992080607}
  - {fileID: 783401285}
  - {fileID: 157945768}
  - {fileID: 441929933}
  - {fileID: 998930542}
  - {fileID: 996808778}
  - {fileID: 1571374742}
  - {fileID: 1622783961}
  - {fileID: 508973503}
  - {fileID: 624594681}
  - {fileID: 157945768}
  m_Father: {fileID: 0}
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -8984,7 +8986,7 @@
  m_Children:
  - {fileID: 851418740}
  m_Father: {fileID: 925045745}
  m_RootOrder: 5
  m_RootOrder: 4
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
@@ -9060,7 +9062,7 @@
  m_Children:
  - {fileID: 1474713017}
  m_Father: {fileID: 925045745}
  m_RootOrder: 2
  m_RootOrder: 3
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
@@ -13212,7 +13214,7 @@
  m_Children:
  - {fileID: 114205549}
  m_Father: {fileID: 925045745}
  m_RootOrder: 6
  m_RootOrder: 5
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
@@ -13856,7 +13858,7 @@
  - {fileID: 1006785496}
  - {fileID: 2029757850}
  m_Father: {fileID: 925045745}
  m_RootOrder: 7
  m_RootOrder: 6
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0.5, y: 0.5}
  m_AnchorMax: {x: 0.5, y: 0.5}
Assets/Scripts/Data/EndlessBuffData.cs
@@ -68,6 +68,19 @@
        /// </summary>
        private static List<EndlessBuffConfig> randomBuffList;
        /// <summary>
        /// 颜色品阶
        /// </summary>
        /// <typeparam name="Color"></typeparam>
        /// <returns></returns>
        private static List<Color> rareColorList = new List<Color>()
        {
            new Color(118 / 255f, 1, 118 / 255f),
            new Color(131 / 255f, 181 / 255f, 1),
            new Color(220 / 255f, 112 / 255f, 1),
            new Color()
        };
        public static void Init()
        {
            endlessBuffList = JsonDataCenter.GetList<endless_buff>();
@@ -163,5 +176,15 @@
        {
            return randomBuffList[index];
        }
        /// <summary>
        /// 根据品质获得颜色值
        /// </summary>
        /// <param name="rare"></param>
        /// <returns></returns>
        public static Color GetColorByRare(int rare)
        {
            return rareColorList[rare - 1];
        }
    }
}
Assets/Scripts/Data/EndlessPortData.cs
@@ -84,17 +84,27 @@
        {
            List<List<EndlessPortConfig>> ret = new List<List<EndlessPortConfig>>();
            for (int i = 0; i < 5; ++i)
            {
                ret.Add(new List<EndlessPortConfig>());
            }
            foreach (EndlessPortConfig data in portConfigList)
            {
                if (data.Config.level != level || data.Config.amount == 0 || data.Config.tunel != 3)
                    continue;
                if (data.Config.wave > ret.Count)
                    ret.Add(new List<EndlessPortConfig>());
                if (data.Config.level != level || data.Config.amount == 0) continue;
                ret[data.Config.wave - 1].Add(data);
            }
            for (int i = 0; i < ret.Count; ++i)
            {
                if (ret[i].Count == 0)
                {
                    ret.Remove(ret[i]);
                    --i;
                }
            }
            return ret;
        }
Assets/Scripts/Enum/EndlessBuffSelectState.cs
New file
@@ -0,0 +1,19 @@
/**
 * 无尽模式buff选择状态
 * @Author: chenxin
 * @Date: 2020-10-19 15:39:42
 */
namespace KTGMGemClient
{
    public enum EndlessBuffSelectState
    {
        // 未选择
        Normal,
        // 已选择,未选中
        Unselected,
        // 已选中
        Selected
    }
}
Assets/Scripts/Enum/EndlessBuffSelectState.cs.meta
copy from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta copy to Assets/Scripts/Enum/EndlessBuffSelectState.cs.meta
File was copied from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 77846cbd0fd353546b25fc2e0d6ad952
guid: 2c84e7dc1c95f754180e7ce300d5a81c
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Assets/Scripts/Json/JsonDataCenter.cs
@@ -177,7 +177,7 @@
                            OpponentMgr.instance.ResetCurrency(currency);
                        if (EndlessLevelManager.instanceExists)
                            EndlessLevelManager.instance.ResetCurrency(5000);
                            EndlessLevelManager.instance.ResetCurrency(currency);
                        break;
                    case "skilltime":
                        // 设置技能塔出现时间
Assets/Scripts/Net/NetExtends/Common.cs
@@ -23,7 +23,7 @@
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Cgxjb21tb24ucHJvdG8SCHByb3RvYnVmIjUKBkdlbU1zZxINCgVnZW1JZBgB",
            "IAEoBRINCgVsZXZlbBgCIAEoBRINCgVjb3VudBgDIAEoBSL4AgoLVXNlckRh",
            "IAEoBRINCgVsZXZlbBgCIAEoBRINCgVjb3VudBgDIAEoBSKtAwoLVXNlckRh",
            "dGFNc2cSEAoIdXNlcm5hbWUYASABKAkSEAoIbmlja25hbWUYAiABKAkSDwoH",
            "aGVhZGltZxgDIAEoBRIRCglzaW5nYXR1cmUYBCABKAkSDQoFbGV2ZWwYBSAB",
            "KAUSDAoEcmFuaxgGIAEoBRINCgVzY29yZRgHIAEoBRILCgNleHAYCCABKAUS",
@@ -32,44 +32,76 @@
            "GA0gAygFEhAKCGdlbWRlY2szGA4gAygFEg4KBmRlY2tpZBgPIAEoBRIUCgxh",
            "Y2NlcHRmcmllbmQYECABKAgSFAoMbmFtZWRjaGFuZ2VkGBEgASgIEg8KB2Fy",
            "ZWFleHAYEiABKAUSKAoJYXJlYWJveGVzGBMgAygLMhUucHJvdG9idWYuQXJl",
            "bmFCb3hNc2cinwEKCUZyaWVuZE1zZxIQCgh1c2VybmFtZRgBIAEoCRIQCghu",
            "aWNrbmFtZRgCIAEoCRIPCgdoZWFkaW1nGAMgASgFEg0KBWxldmVsGAUgASgF",
            "EgwKBHJhbmsYBiABKAUSDQoFc2NvcmUYByABKAUSDgoGb25saW5lGAggASgI",
            "EiEKB2dlbWRlY2sYCSADKAsyEC5wcm90b2J1Zi5HZW1Nc2ciVgoMU3RvcmVB",
            "cmVhTXNnEgoKAmlkGAEgASgFEhMKC3JlZnJlc2hUaW1lGAIgASgFEiUKBWl0",
            "ZW1zGAMgAygLMhYucHJvdG9idWYuU3RvcmVJdGVtTXNnIiwKDFN0b3JlSXRl",
            "bU1zZxIKCgJpZBgBIAEoBRIQCghidXlDb3VudBgCIAEoBSI4Cg1SZXdhcmRJ",
            "dGVtTXNnEgwKBHR5cGUYASABKAUSCgoCaWQYAiABKAUSDQoFY291bnQYAyAB",
            "KAUiPQoLQXJlbmFCb3hNc2cSCwoDcG9zGAEgASgFEg0KBWJveGlkGAIgASgF",
            "EhIKCmV4cGlyZVRpbWUYAyABKAUqXAoIQ1VSUkVOQ1kSEgoOQ1VSUkVOQ1lf",
            "QkVHSU4QABIJCgVNT05FWRABEggKBEdPTEQQAhIHCgNSTUIQAxIHCgNHRU0Q",
            "BBIHCgNCT1gQBRIMCghBUkVOQUVYUBAGKiYKCUNoYW5uZWxJRBIRCg1DSEFO",
            "TkVMX0JFR0lOEAASBgoCR00QASqNBQoJRXJyb3JDb2RlEgsKB1N1Y2Nlc3MQ",
            "ABIVChFDaGFubmVsSWRfTm9FeGlzdBABEhQKEFVzZXJOYW1lX0ludmFsaWQQ",
            "AhIYChRVc2VyUGFzc1dvcmRfSW52YWxpZBADEhAKDFVua25vd19FcnJvchAE",
            "EhEKDUlucHV0X0ludmFsaWQQBRILCgdUaW1lb3V0EAYSFgoSU2Vzc2lvbktl",
            "eV9JbnZhbGlkEAcSEAoMTG9naW5fTm9Vc2VyEAgSEwoPTm90RW5vdWdoX01v",
            "bmV5EAkSEgoOTm90RW5vdWdoX0dvbGQQChIRCg1Ob3RFbm91Z2hfR2VtEAsS",
            "EwoPTm90Rm91bmRfRnJpZW5kEAwSEgoOQWxyZWFkeV9GcmllbmQQDRISCg5J",
            "bkJsb2NrX0ZyaWVuZBAOEg4KCk1heF9GcmllbmQQDxIQCgxNYXhfTmlja05h",
            "bWUQEBIUChBJbnZhbGlkX05pY2tOYW1lEBESEgoOTWF4X1N0b3JlTGltaXQQ",
            "EhIWChJOb3RFbm91Z2hfU3RvcmVCdXkQExIUChBOb3RPcGVuX1Bhc3NQb3J0",
            "EBQSFAoQQWxyZWFkeV9QYXNzUG9ydBAVEhwKGE5lZWRWaXBfUGFzc1BvcnRU",
            "YWtlSXRlbRAWEh4KGk5lZWRMZXZlbF9QYXNzUG9ydFRha2VJdGVtEBcSHAoY",
            "QWxyZWFkeV9QYXNzUG9ydFRha2VJdGVtEBgSHAoYSW52YWxpZF9QYXNzUG9y",
            "dEJ1eUxldmVsEBkSFgoSSGFzVW5sb2NrX0FyZW5hQm94EBoSGwoXT3RoZXJV",
            "bmxvY2tpbmdfQXJlbmFCb3gQGxIYChROb3RUaW1lVGFrZV9BcmVuYUJveBAc",
            "YgZwcm90bzM="));
            "bmFCb3hNc2cSIwoGZmFtaWx5GBQgASgLMhMucHJvdG9idWYuRmFtaWx5TXNn",
            "Eg4KBmRvbmF0ZRgVIAEoBSKfAQoJRnJpZW5kTXNnEhAKCHVzZXJuYW1lGAEg",
            "ASgJEhAKCG5pY2tuYW1lGAIgASgJEg8KB2hlYWRpbWcYAyABKAUSDQoFbGV2",
            "ZWwYBSABKAUSDAoEcmFuaxgGIAEoBRINCgVzY29yZRgHIAEoBRIOCgZvbmxp",
            "bmUYCCABKAgSIQoHZ2VtZGVjaxgJIAMoCzIQLnByb3RvYnVmLkdlbU1zZyJW",
            "CgxTdG9yZUFyZWFNc2cSCgoCaWQYASABKAUSEwoLcmVmcmVzaFRpbWUYAiAB",
            "KAUSJQoFaXRlbXMYAyADKAsyFi5wcm90b2J1Zi5TdG9yZUl0ZW1Nc2ciLAoM",
            "U3RvcmVJdGVtTXNnEgoKAmlkGAEgASgFEhAKCGJ1eUNvdW50GAIgASgFIjgK",
            "DVJld2FyZEl0ZW1Nc2cSDAoEdHlwZRgBIAEoBRIKCgJpZBgCIAEoBRINCgVj",
            "b3VudBgDIAEoBSI9CgtBcmVuYUJveE1zZxILCgNwb3MYASABKAUSDQoFYm94",
            "aWQYAiABKAUSEgoKZXhwaXJlVGltZRgDIAEoBSKvAQoPRmFtaWx5TWVtYmVy",
            "TXNnEhAKCHVzZXJuYW1lGAEgASgJEhAKCG5pY2tuYW1lGAIgASgJEg8KB2hl",
            "YWRpbWcYAyABKAUSEAoIcG9zaXRpb24YBCABKAUSDgoGb25saW5lGAUgASgI",
            "Eg0KBXNjb3JlGAYgASgFEg0KBWxldmVsGAcgASgFEhIKCndlZWtEb25hdGUY",
            "CCABKAUSEwoLdG90YWxEb25hdGUYCSABKAUiPAoTRmFtaWx5RG9uYXRlSXRl",
            "bU1zZxIQCgh1c2VybmFtZRgBIAEoCRITCgtkb25hdGVDb3VudBgCIAEoBSKS",
            "AwoNRmFtaWx5Q2hhdE1zZxIRCgltZXNzYWdlSWQYASABKAUSEAoIdXNlcm5h",
            "bWUYAiABKAkSEAoIbmlja25hbWUYAyABKAkSDwoHaGVhZGltZxgEIAEoBRIS",
            "CgpjcmVhdGVUaW1lGAUgASgFEg8KB2NvbnRlbnQYBiABKAkSJAoIY2hhdFR5",
            "cGUYByABKA4yEi5wcm90b2J1Zi5DaGF0VHlwZRINCgVnZW1JZBgIIAEoBRIx",
            "Cgpkb25hdGVsaXN0GAkgAygLMh0ucHJvdG9idWYuRmFtaWx5RG9uYXRlSXRl",
            "bU1zZxIUCgxyZWNlaXZlQ291bnQYCiABKAUSEgoKVG90YWxDb3VudBgLIAEo",
            "BRIQCghub3RpY2VJZBgMIAEoBRIOCgZwYXJhbXMYDSADKAkSEwoLbmV3VXNl",
            "cm5hbWUYDiABKAkSEwoLbmV3Tmlja25hbWUYDyABKAkSEgoKbmV3SGVhZGlt",
            "ZxgQIAEoBRIQCghuZXdMZXZlbBgRIAEoBRIQCghuZXdTY29yZRgSIAEoBSLS",
            "AQoJRmFtaWx5TXNnEgsKA3VpZBgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBGRl",
            "c2MYAyABKAkSDQoFaWNvbnMYBCADKAUSDQoFc2NvcmUYBSABKAUSEwoLc2Nv",
            "cmVzaG9wSWQYBiABKAUSGAoQc2NvcmVzaG9wRXhwaXJlZBgHIAEoBRIQCghm",
            "cmVlSm9pbhgIIAEoBRIRCgluZWVkU2NvcmUYCSABKAUSKgoHbWVtYmVycxgK",
            "IAMoCzIZLnByb3RvYnVmLkZhbWlseU1lbWJlck1zZyKoAQoTRmFtaWx5U2Vh",
            "cmNoSXRlbU1zZxILCgN1aWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgRkZXNj",
            "GAMgASgJEg0KBWljb25zGAQgAygFEhMKC21lbWJlckNvdW50GAUgASgFEhAK",
            "CGlzQWN0aXZlGAYgASgIEhIKCmlzRnJpZW5kSW4YByABKAgSDQoFaXNOZXcY",
            "CCABKAgSDwoHaXNBcHBseRgJIAEoCCpoCghDVVJSRU5DWRISCg5DVVJSRU5D",
            "WV9CRUdJThAAEgkKBU1PTkVZEAESCAoER09MRBACEgcKA1JNQhADEgcKA0dF",
            "TRAEEgcKA0JPWBAFEgwKCEFSRU5BRVhQEAYSCgoGRE9OQVRFEAcqJgoJQ2hh",
            "bm5lbElEEhEKDUNIQU5ORUxfQkVHSU4QABIGCgJHTRABKo0FCglFcnJvckNv",
            "ZGUSCwoHU3VjY2VzcxAAEhUKEUNoYW5uZWxJZF9Ob0V4aXN0EAESFAoQVXNl",
            "ck5hbWVfSW52YWxpZBACEhgKFFVzZXJQYXNzV29yZF9JbnZhbGlkEAMSEAoM",
            "VW5rbm93X0Vycm9yEAQSEQoNSW5wdXRfSW52YWxpZBAFEgsKB1RpbWVvdXQQ",
            "BhIWChJTZXNzaW9uS2V5X0ludmFsaWQQBxIQCgxMb2dpbl9Ob1VzZXIQCBIT",
            "Cg9Ob3RFbm91Z2hfTW9uZXkQCRISCg5Ob3RFbm91Z2hfR29sZBAKEhEKDU5v",
            "dEVub3VnaF9HZW0QCxITCg9Ob3RGb3VuZF9GcmllbmQQDBISCg5BbHJlYWR5",
            "X0ZyaWVuZBANEhIKDkluQmxvY2tfRnJpZW5kEA4SDgoKTWF4X0ZyaWVuZBAP",
            "EhAKDE1heF9OaWNrTmFtZRAQEhQKEEludmFsaWRfTmlja05hbWUQERISCg5N",
            "YXhfU3RvcmVMaW1pdBASEhYKEk5vdEVub3VnaF9TdG9yZUJ1eRATEhQKEE5v",
            "dE9wZW5fUGFzc1BvcnQQFBIUChBBbHJlYWR5X1Bhc3NQb3J0EBUSHAoYTmVl",
            "ZFZpcF9QYXNzUG9ydFRha2VJdGVtEBYSHgoaTmVlZExldmVsX1Bhc3NQb3J0",
            "VGFrZUl0ZW0QFxIcChhBbHJlYWR5X1Bhc3NQb3J0VGFrZUl0ZW0QGBIcChhJ",
            "bnZhbGlkX1Bhc3NQb3J0QnV5TGV2ZWwQGRIWChJIYXNVbmxvY2tfQXJlbmFC",
            "b3gQGhIbChdPdGhlclVubG9ja2luZ19BcmVuYUJveBAbEhgKFE5vdFRpbWVU",
            "YWtlX0FyZW5hQm94EBwqcQoIQ2hhdFR5cGUSEgoOQ2hhdFR5cGVfQmVnaW4Q",
            "ABIRCg1DaGF0VHlwZV9UZXh0EAESFgoSQ2hhdFR5cGVfRG9uYXRlR2VtEAIS",
            "EwoPQ2hhdFR5cGVfU3lzdGVtEAMSEQoNQ2hhdFR5cGVfSm9pbhAEYgZwcm90",
            "bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Protobuf.CURRENCY), typeof(global::Protobuf.ChannelID), typeof(global::Protobuf.ErrorCode), }, new pbr::GeneratedClrTypeInfo[] {
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Protobuf.CURRENCY), typeof(global::Protobuf.ChannelID), typeof(global::Protobuf.ErrorCode), typeof(global::Protobuf.ChatType), }, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.GemMsg), global::Protobuf.GemMsg.Parser, new[]{ "GemId", "Level", "Count" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.UserDataMsg), global::Protobuf.UserDataMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Singature", "Level", "Rank", "Score", "Exp", "Money", "Gold", "Gems", "Gemdeck1", "Gemdeck2", "Gemdeck3", "Deckid", "Acceptfriend", "Namedchanged", "Areaexp", "Areaboxes" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.UserDataMsg), global::Protobuf.UserDataMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Singature", "Level", "Rank", "Score", "Exp", "Money", "Gold", "Gems", "Gemdeck1", "Gemdeck2", "Gemdeck3", "Deckid", "Acceptfriend", "Namedchanged", "Areaexp", "Areaboxes", "Family", "Donate" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FriendMsg), global::Protobuf.FriendMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Level", "Rank", "Score", "Online", "Gemdeck" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.StoreAreaMsg), global::Protobuf.StoreAreaMsg.Parser, new[]{ "Id", "RefreshTime", "Items" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.StoreItemMsg), global::Protobuf.StoreItemMsg.Parser, new[]{ "Id", "BuyCount" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.RewardItemMsg), global::Protobuf.RewardItemMsg.Parser, new[]{ "Type", "Id", "Count" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.ArenaBoxMsg), global::Protobuf.ArenaBoxMsg.Parser, new[]{ "Pos", "Boxid", "ExpireTime" }, null, null, null)
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.ArenaBoxMsg), global::Protobuf.ArenaBoxMsg.Parser, new[]{ "Pos", "Boxid", "ExpireTime" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyMemberMsg), global::Protobuf.FamilyMemberMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Position", "Online", "Score", "Level", "WeekDonate", "TotalDonate" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyDonateItemMsg), global::Protobuf.FamilyDonateItemMsg.Parser, new[]{ "Username", "DonateCount" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyChatMsg), global::Protobuf.FamilyChatMsg.Parser, new[]{ "MessageId", "Username", "Nickname", "Headimg", "CreateTime", "Content", "ChatType", "GemId", "Donatelist", "ReceiveCount", "TotalCount", "NoticeId", "Params", "NewUsername", "NewNickname", "NewHeadimg", "NewLevel", "NewScore" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyMsg), global::Protobuf.FamilyMsg.Parser, new[]{ "Uid", "Name", "Desc", "Icons", "Score", "ScoreshopId", "ScoreshopExpired", "FreeJoin", "NeedScore", "Members" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilySearchItemMsg), global::Protobuf.FamilySearchItemMsg.Parser, new[]{ "Uid", "Name", "Desc", "Icons", "MemberCount", "IsActive", "IsFriendIn", "IsNew", "IsApply" }, null, null, null)
          }));
    }
    #endregion
@@ -106,6 +138,10 @@
    /// !竞技场经验
    /// </summary>
    [pbr::OriginalName("ARENAEXP")] Arenaexp = 6,
    /// <summary>
    /// 工会捐献积分
    /// </summary>
    [pbr::OriginalName("DONATE")] Donate = 7,
  }
  /// <summary>
@@ -239,6 +275,26 @@
    /// ! 开宝箱失败,时间没到
    /// </summary>
    [pbr::OriginalName("NotTimeTake_ArenaBox")] NotTimeTakeArenaBox = 28,
  }
  public enum ChatType {
    [pbr::OriginalName("ChatType_Begin")] Begin = 0,
    /// <summary>
    ///  文本聊天
    /// </summary>
    [pbr::OriginalName("ChatType_Text")] Text = 1,
    /// <summary>
    ///  捐赠卡牌
    /// </summary>
    [pbr::OriginalName("ChatType_DonateGem")] DonateGem = 2,
    /// <summary>
    ///  系统消息,需要查询文字字符串配置表
    /// </summary>
    [pbr::OriginalName("ChatType_System")] System = 3,
    /// <summary>
    ///  新成员加入申请
    /// </summary>
    [pbr::OriginalName("ChatType_Join")] Join = 4,
  }
  #endregion
@@ -475,6 +531,8 @@
      namedchanged_ = other.namedchanged_;
      areaexp_ = other.areaexp_;
      areaboxes_ = other.areaboxes_.Clone();
      Family = other.family_ != null ? other.Family.Clone() : null;
      donate_ = other.donate_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -535,6 +593,9 @@
    /// <summary>Field number for the "level" field.</summary>
    public const int LevelFieldNumber = 5;
    private int level_;
    /// <summary>
    /// 等级
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Level {
      get { return level_; }
@@ -722,6 +783,34 @@
      get { return areaboxes_; }
    }
    /// <summary>Field number for the "family" field.</summary>
    public const int FamilyFieldNumber = 20;
    private global::Protobuf.FamilyMsg family_;
    /// <summary>
    ///  工会信息
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Protobuf.FamilyMsg Family {
      get { return family_; }
      set {
        family_ = value;
      }
    }
    /// <summary>Field number for the "donate" field.</summary>
    public const int DonateFieldNumber = 21;
    private int donate_;
    /// <summary>
    /// 工会捐赠积分
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Donate {
      get { return donate_; }
      set {
        donate_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as UserDataMsg);
@@ -754,6 +843,8 @@
      if (Namedchanged != other.Namedchanged) return false;
      if (Areaexp != other.Areaexp) return false;
      if(!areaboxes_.Equals(other.areaboxes_)) return false;
      if (!object.Equals(Family, other.Family)) return false;
      if (Donate != other.Donate) return false;
      return true;
    }
@@ -779,6 +870,8 @@
      if (Namedchanged != false) hash ^= Namedchanged.GetHashCode();
      if (Areaexp != 0) hash ^= Areaexp.GetHashCode();
      hash ^= areaboxes_.GetHashCode();
      if (family_ != null) hash ^= Family.GetHashCode();
      if (Donate != 0) hash ^= Donate.GetHashCode();
      return hash;
    }
@@ -850,6 +943,14 @@
        output.WriteInt32(Areaexp);
      }
      areaboxes_.WriteTo(output, _repeated_areaboxes_codec);
      if (family_ != null) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(Family);
      }
      if (Donate != 0) {
        output.WriteRawTag(168, 1);
        output.WriteInt32(Donate);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -902,6 +1003,12 @@
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(Areaexp);
      }
      size += areaboxes_.CalculateSize(_repeated_areaboxes_codec);
      if (family_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Family);
      }
      if (Donate != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(Donate);
      }
      return size;
    }
@@ -957,6 +1064,15 @@
        Areaexp = other.Areaexp;
      }
      areaboxes_.Add(other.areaboxes_);
      if (other.family_ != null) {
        if (family_ == null) {
          family_ = new global::Protobuf.FamilyMsg();
        }
        Family.MergeFrom(other.Family);
      }
      if (other.Donate != 0) {
        Donate = other.Donate;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1044,6 +1160,17 @@
          }
          case 154: {
            areaboxes_.AddEntriesFrom(input, _repeated_areaboxes_codec);
            break;
          }
          case 162: {
            if (family_ == null) {
              family_ = new global::Protobuf.FamilyMsg();
            }
            input.ReadMessage(family_);
            break;
          }
          case 168: {
            Donate = input.ReadInt32();
            break;
          }
        }
@@ -1586,7 +1713,7 @@
    public const int IdFieldNumber = 1;
    private int id_;
    /// <summary>
    ///  store表ID
    ///  store表ID 或其他具体商城的表
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Id {
@@ -2070,6 +2197,1881 @@
  }
  /// <summary>
  /// !工会成员信息
  /// </summary>
  public sealed partial class FamilyMemberMsg : pb::IMessage<FamilyMemberMsg> {
    private static readonly pb::MessageParser<FamilyMemberMsg> _parser = new pb::MessageParser<FamilyMemberMsg>(() => new FamilyMemberMsg());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<FamilyMemberMsg> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Protobuf.CommonReflection.Descriptor.MessageTypes[7]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyMemberMsg() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyMemberMsg(FamilyMemberMsg other) : this() {
      username_ = other.username_;
      nickname_ = other.nickname_;
      headimg_ = other.headimg_;
      position_ = other.position_;
      online_ = other.online_;
      score_ = other.score_;
      level_ = other.level_;
      weekDonate_ = other.weekDonate_;
      totalDonate_ = other.totalDonate_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyMemberMsg Clone() {
      return new FamilyMemberMsg(this);
    }
    /// <summary>Field number for the "username" field.</summary>
    public const int UsernameFieldNumber = 1;
    private string username_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Username {
      get { return username_; }
      set {
        username_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "nickname" field.</summary>
    public const int NicknameFieldNumber = 2;
    private string nickname_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Nickname {
      get { return nickname_; }
      set {
        nickname_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "headimg" field.</summary>
    public const int HeadimgFieldNumber = 3;
    private int headimg_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Headimg {
      get { return headimg_; }
      set {
        headimg_ = value;
      }
    }
    /// <summary>Field number for the "position" field.</summary>
    public const int PositionFieldNumber = 4;
    private int position_;
    /// <summary>
    ///  工会角色 0-会员,1-会长
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Position {
      get { return position_; }
      set {
        position_ = value;
      }
    }
    /// <summary>Field number for the "online" field.</summary>
    public const int OnlineFieldNumber = 5;
    private bool online_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Online {
      get { return online_; }
      set {
        online_ = value;
      }
    }
    /// <summary>Field number for the "score" field.</summary>
    public const int ScoreFieldNumber = 6;
    private int score_;
    /// <summary>
    /// 分数
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Score {
      get { return score_; }
      set {
        score_ = value;
      }
    }
    /// <summary>Field number for the "level" field.</summary>
    public const int LevelFieldNumber = 7;
    private int level_;
    /// <summary>
    /// 等级
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Level {
      get { return level_; }
      set {
        level_ = value;
      }
    }
    /// <summary>Field number for the "weekDonate" field.</summary>
    public const int WeekDonateFieldNumber = 8;
    private int weekDonate_;
    /// <summary>
    ///  本周和总捐献数
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int WeekDonate {
      get { return weekDonate_; }
      set {
        weekDonate_ = value;
      }
    }
    /// <summary>Field number for the "totalDonate" field.</summary>
    public const int TotalDonateFieldNumber = 9;
    private int totalDonate_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int TotalDonate {
      get { return totalDonate_; }
      set {
        totalDonate_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as FamilyMemberMsg);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FamilyMemberMsg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Username != other.Username) return false;
      if (Nickname != other.Nickname) return false;
      if (Headimg != other.Headimg) return false;
      if (Position != other.Position) return false;
      if (Online != other.Online) return false;
      if (Score != other.Score) return false;
      if (Level != other.Level) return false;
      if (WeekDonate != other.WeekDonate) return false;
      if (TotalDonate != other.TotalDonate) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Username.Length != 0) hash ^= Username.GetHashCode();
      if (Nickname.Length != 0) hash ^= Nickname.GetHashCode();
      if (Headimg != 0) hash ^= Headimg.GetHashCode();
      if (Position != 0) hash ^= Position.GetHashCode();
      if (Online != false) hash ^= Online.GetHashCode();
      if (Score != 0) hash ^= Score.GetHashCode();
      if (Level != 0) hash ^= Level.GetHashCode();
      if (WeekDonate != 0) hash ^= WeekDonate.GetHashCode();
      if (TotalDonate != 0) hash ^= TotalDonate.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Username.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Username);
      }
      if (Nickname.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Nickname);
      }
      if (Headimg != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Headimg);
      }
      if (Position != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(Position);
      }
      if (Online != false) {
        output.WriteRawTag(40);
        output.WriteBool(Online);
      }
      if (Score != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(Score);
      }
      if (Level != 0) {
        output.WriteRawTag(56);
        output.WriteInt32(Level);
      }
      if (WeekDonate != 0) {
        output.WriteRawTag(64);
        output.WriteInt32(WeekDonate);
      }
      if (TotalDonate != 0) {
        output.WriteRawTag(72);
        output.WriteInt32(TotalDonate);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Username.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Username);
      }
      if (Nickname.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Nickname);
      }
      if (Headimg != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Headimg);
      }
      if (Position != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Position);
      }
      if (Online != false) {
        size += 1 + 1;
      }
      if (Score != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Score);
      }
      if (Level != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level);
      }
      if (WeekDonate != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(WeekDonate);
      }
      if (TotalDonate != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TotalDonate);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FamilyMemberMsg other) {
      if (other == null) {
        return;
      }
      if (other.Username.Length != 0) {
        Username = other.Username;
      }
      if (other.Nickname.Length != 0) {
        Nickname = other.Nickname;
      }
      if (other.Headimg != 0) {
        Headimg = other.Headimg;
      }
      if (other.Position != 0) {
        Position = other.Position;
      }
      if (other.Online != false) {
        Online = other.Online;
      }
      if (other.Score != 0) {
        Score = other.Score;
      }
      if (other.Level != 0) {
        Level = other.Level;
      }
      if (other.WeekDonate != 0) {
        WeekDonate = other.WeekDonate;
      }
      if (other.TotalDonate != 0) {
        TotalDonate = other.TotalDonate;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Username = input.ReadString();
            break;
          }
          case 18: {
            Nickname = input.ReadString();
            break;
          }
          case 24: {
            Headimg = input.ReadInt32();
            break;
          }
          case 32: {
            Position = input.ReadInt32();
            break;
          }
          case 40: {
            Online = input.ReadBool();
            break;
          }
          case 48: {
            Score = input.ReadInt32();
            break;
          }
          case 56: {
            Level = input.ReadInt32();
            break;
          }
          case 64: {
            WeekDonate = input.ReadInt32();
            break;
          }
          case 72: {
            TotalDonate = input.ReadInt32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class FamilyDonateItemMsg : pb::IMessage<FamilyDonateItemMsg> {
    private static readonly pb::MessageParser<FamilyDonateItemMsg> _parser = new pb::MessageParser<FamilyDonateItemMsg>(() => new FamilyDonateItemMsg());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<FamilyDonateItemMsg> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Protobuf.CommonReflection.Descriptor.MessageTypes[8]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyDonateItemMsg() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyDonateItemMsg(FamilyDonateItemMsg other) : this() {
      username_ = other.username_;
      donateCount_ = other.donateCount_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyDonateItemMsg Clone() {
      return new FamilyDonateItemMsg(this);
    }
    /// <summary>Field number for the "username" field.</summary>
    public const int UsernameFieldNumber = 1;
    private string username_ = "";
    /// <summary>
    ///
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Username {
      get { return username_; }
      set {
        username_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "donateCount" field.</summary>
    public const int DonateCountFieldNumber = 2;
    private int donateCount_;
    /// <summary>
    ///  已经捐赠个数
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int DonateCount {
      get { return donateCount_; }
      set {
        donateCount_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as FamilyDonateItemMsg);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FamilyDonateItemMsg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Username != other.Username) return false;
      if (DonateCount != other.DonateCount) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Username.Length != 0) hash ^= Username.GetHashCode();
      if (DonateCount != 0) hash ^= DonateCount.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Username.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Username);
      }
      if (DonateCount != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(DonateCount);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Username.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Username);
      }
      if (DonateCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DonateCount);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FamilyDonateItemMsg other) {
      if (other == null) {
        return;
      }
      if (other.Username.Length != 0) {
        Username = other.Username;
      }
      if (other.DonateCount != 0) {
        DonateCount = other.DonateCount;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Username = input.ReadString();
            break;
          }
          case 16: {
            DonateCount = input.ReadInt32();
            break;
          }
        }
      }
    }
  }
  /// <summary>
  /// !工会聊天信息
  /// </summary>
  public sealed partial class FamilyChatMsg : pb::IMessage<FamilyChatMsg> {
    private static readonly pb::MessageParser<FamilyChatMsg> _parser = new pb::MessageParser<FamilyChatMsg>(() => new FamilyChatMsg());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<FamilyChatMsg> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Protobuf.CommonReflection.Descriptor.MessageTypes[9]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyChatMsg() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyChatMsg(FamilyChatMsg other) : this() {
      messageId_ = other.messageId_;
      username_ = other.username_;
      nickname_ = other.nickname_;
      headimg_ = other.headimg_;
      createTime_ = other.createTime_;
      content_ = other.content_;
      chatType_ = other.chatType_;
      gemId_ = other.gemId_;
      donatelist_ = other.donatelist_.Clone();
      receiveCount_ = other.receiveCount_;
      totalCount_ = other.totalCount_;
      noticeId_ = other.noticeId_;
      params_ = other.params_.Clone();
      newUsername_ = other.newUsername_;
      newNickname_ = other.newNickname_;
      newHeadimg_ = other.newHeadimg_;
      newLevel_ = other.newLevel_;
      newScore_ = other.newScore_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyChatMsg Clone() {
      return new FamilyChatMsg(this);
    }
    /// <summary>Field number for the "messageId" field.</summary>
    public const int MessageIdFieldNumber = 1;
    private int messageId_;
    /// <summary>
    /// !所有消息按此ID排序,越大表示最近发送的
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int MessageId {
      get { return messageId_; }
      set {
        messageId_ = value;
      }
    }
    /// <summary>Field number for the "username" field.</summary>
    public const int UsernameFieldNumber = 2;
    private string username_ = "";
    /// <summary>
    /// 发起者信息
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Username {
      get { return username_; }
      set {
        username_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "nickname" field.</summary>
    public const int NicknameFieldNumber = 3;
    private string nickname_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Nickname {
      get { return nickname_; }
      set {
        nickname_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "headimg" field.</summary>
    public const int HeadimgFieldNumber = 4;
    private int headimg_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Headimg {
      get { return headimg_; }
      set {
        headimg_ = value;
      }
    }
    /// <summary>Field number for the "createTime" field.</summary>
    public const int CreateTimeFieldNumber = 5;
    private int createTime_;
    /// <summary>
    ///  聊天发送的时间 单位秒 时间戳
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CreateTime {
      get { return createTime_; }
      set {
        createTime_ = value;
      }
    }
    /// <summary>Field number for the "content" field.</summary>
    public const int ContentFieldNumber = 6;
    private string content_ = "";
    /// <summary>
    ///  聊天内容,
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Content {
      get { return content_; }
      set {
        content_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "chatType" field.</summary>
    public const int ChatTypeFieldNumber = 7;
    private global::Protobuf.ChatType chatType_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Protobuf.ChatType ChatType {
      get { return chatType_; }
      set {
        chatType_ = value;
      }
    }
    /// <summary>Field number for the "gemId" field.</summary>
    public const int GemIdFieldNumber = 8;
    private int gemId_;
    /// <summary>
    /// @{
    ///  如果是请求捐赠,这个是卡牌宝石ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int GemId {
      get { return gemId_; }
      set {
        gemId_ = value;
      }
    }
    /// <summary>Field number for the "donatelist" field.</summary>
    public const int DonatelistFieldNumber = 9;
    private static readonly pb::FieldCodec<global::Protobuf.FamilyDonateItemMsg> _repeated_donatelist_codec
        = pb::FieldCodec.ForMessage(74, global::Protobuf.FamilyDonateItemMsg.Parser);
    private readonly pbc::RepeatedField<global::Protobuf.FamilyDonateItemMsg> donatelist_ = new pbc::RepeatedField<global::Protobuf.FamilyDonateItemMsg>();
    /// <summary>
    ///   捐赠者列表
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Protobuf.FamilyDonateItemMsg> Donatelist {
      get { return donatelist_; }
    }
    /// <summary>Field number for the "receiveCount" field.</summary>
    public const int ReceiveCountFieldNumber = 10;
    private int receiveCount_;
    /// <summary>
    /// ! 总共需要个数
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ReceiveCount {
      get { return receiveCount_; }
      set {
        receiveCount_ = value;
      }
    }
    /// <summary>Field number for the "TotalCount" field.</summary>
    public const int TotalCountFieldNumber = 11;
    private int totalCount_;
    /// <summary>
    /// @}
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int TotalCount {
      get { return totalCount_; }
      set {
        totalCount_ = value;
      }
    }
    /// <summary>Field number for the "noticeId" field.</summary>
    public const int NoticeIdFieldNumber = 12;
    private int noticeId_;
    /// <summary>
    /// @{
    ///  系统聊天,需要替换聊天的配表字段,@see notice 表
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NoticeId {
      get { return noticeId_; }
      set {
        noticeId_ = value;
      }
    }
    /// <summary>Field number for the "params" field.</summary>
    public const int ParamsFieldNumber = 13;
    private static readonly pb::FieldCodec<string> _repeated_params_codec
        = pb::FieldCodec.ForString(106);
    private readonly pbc::RepeatedField<string> params_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// @}
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> Params {
      get { return params_; }
    }
    /// <summary>Field number for the "newUsername" field.</summary>
    public const int NewUsernameFieldNumber = 14;
    private string newUsername_ = "";
    /// <summary>
    /// @{
    ///  只有会长能收到新成员加入消息
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string NewUsername {
      get { return newUsername_; }
      set {
        newUsername_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "newNickname" field.</summary>
    public const int NewNicknameFieldNumber = 15;
    private string newNickname_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string NewNickname {
      get { return newNickname_; }
      set {
        newNickname_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "newHeadimg" field.</summary>
    public const int NewHeadimgFieldNumber = 16;
    private int newHeadimg_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NewHeadimg {
      get { return newHeadimg_; }
      set {
        newHeadimg_ = value;
      }
    }
    /// <summary>Field number for the "newLevel" field.</summary>
    public const int NewLevelFieldNumber = 17;
    private int newLevel_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NewLevel {
      get { return newLevel_; }
      set {
        newLevel_ = value;
      }
    }
    /// <summary>Field number for the "newScore" field.</summary>
    public const int NewScoreFieldNumber = 18;
    private int newScore_;
    /// <summary>
    /// 分数
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NewScore {
      get { return newScore_; }
      set {
        newScore_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as FamilyChatMsg);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FamilyChatMsg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (MessageId != other.MessageId) return false;
      if (Username != other.Username) return false;
      if (Nickname != other.Nickname) return false;
      if (Headimg != other.Headimg) return false;
      if (CreateTime != other.CreateTime) return false;
      if (Content != other.Content) return false;
      if (ChatType != other.ChatType) return false;
      if (GemId != other.GemId) return false;
      if(!donatelist_.Equals(other.donatelist_)) return false;
      if (ReceiveCount != other.ReceiveCount) return false;
      if (TotalCount != other.TotalCount) return false;
      if (NoticeId != other.NoticeId) return false;
      if(!params_.Equals(other.params_)) return false;
      if (NewUsername != other.NewUsername) return false;
      if (NewNickname != other.NewNickname) return false;
      if (NewHeadimg != other.NewHeadimg) return false;
      if (NewLevel != other.NewLevel) return false;
      if (NewScore != other.NewScore) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (MessageId != 0) hash ^= MessageId.GetHashCode();
      if (Username.Length != 0) hash ^= Username.GetHashCode();
      if (Nickname.Length != 0) hash ^= Nickname.GetHashCode();
      if (Headimg != 0) hash ^= Headimg.GetHashCode();
      if (CreateTime != 0) hash ^= CreateTime.GetHashCode();
      if (Content.Length != 0) hash ^= Content.GetHashCode();
      if (ChatType != 0) hash ^= ChatType.GetHashCode();
      if (GemId != 0) hash ^= GemId.GetHashCode();
      hash ^= donatelist_.GetHashCode();
      if (ReceiveCount != 0) hash ^= ReceiveCount.GetHashCode();
      if (TotalCount != 0) hash ^= TotalCount.GetHashCode();
      if (NoticeId != 0) hash ^= NoticeId.GetHashCode();
      hash ^= params_.GetHashCode();
      if (NewUsername.Length != 0) hash ^= NewUsername.GetHashCode();
      if (NewNickname.Length != 0) hash ^= NewNickname.GetHashCode();
      if (NewHeadimg != 0) hash ^= NewHeadimg.GetHashCode();
      if (NewLevel != 0) hash ^= NewLevel.GetHashCode();
      if (NewScore != 0) hash ^= NewScore.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (MessageId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(MessageId);
      }
      if (Username.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Username);
      }
      if (Nickname.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Nickname);
      }
      if (Headimg != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(Headimg);
      }
      if (CreateTime != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(CreateTime);
      }
      if (Content.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Content);
      }
      if (ChatType != 0) {
        output.WriteRawTag(56);
        output.WriteEnum((int) ChatType);
      }
      if (GemId != 0) {
        output.WriteRawTag(64);
        output.WriteInt32(GemId);
      }
      donatelist_.WriteTo(output, _repeated_donatelist_codec);
      if (ReceiveCount != 0) {
        output.WriteRawTag(80);
        output.WriteInt32(ReceiveCount);
      }
      if (TotalCount != 0) {
        output.WriteRawTag(88);
        output.WriteInt32(TotalCount);
      }
      if (NoticeId != 0) {
        output.WriteRawTag(96);
        output.WriteInt32(NoticeId);
      }
      params_.WriteTo(output, _repeated_params_codec);
      if (NewUsername.Length != 0) {
        output.WriteRawTag(114);
        output.WriteString(NewUsername);
      }
      if (NewNickname.Length != 0) {
        output.WriteRawTag(122);
        output.WriteString(NewNickname);
      }
      if (NewHeadimg != 0) {
        output.WriteRawTag(128, 1);
        output.WriteInt32(NewHeadimg);
      }
      if (NewLevel != 0) {
        output.WriteRawTag(136, 1);
        output.WriteInt32(NewLevel);
      }
      if (NewScore != 0) {
        output.WriteRawTag(144, 1);
        output.WriteInt32(NewScore);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (MessageId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MessageId);
      }
      if (Username.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Username);
      }
      if (Nickname.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Nickname);
      }
      if (Headimg != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Headimg);
      }
      if (CreateTime != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CreateTime);
      }
      if (Content.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Content);
      }
      if (ChatType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ChatType);
      }
      if (GemId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(GemId);
      }
      size += donatelist_.CalculateSize(_repeated_donatelist_codec);
      if (ReceiveCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ReceiveCount);
      }
      if (TotalCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TotalCount);
      }
      if (NoticeId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(NoticeId);
      }
      size += params_.CalculateSize(_repeated_params_codec);
      if (NewUsername.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NewUsername);
      }
      if (NewNickname.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NewNickname);
      }
      if (NewHeadimg != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(NewHeadimg);
      }
      if (NewLevel != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(NewLevel);
      }
      if (NewScore != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(NewScore);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FamilyChatMsg other) {
      if (other == null) {
        return;
      }
      if (other.MessageId != 0) {
        MessageId = other.MessageId;
      }
      if (other.Username.Length != 0) {
        Username = other.Username;
      }
      if (other.Nickname.Length != 0) {
        Nickname = other.Nickname;
      }
      if (other.Headimg != 0) {
        Headimg = other.Headimg;
      }
      if (other.CreateTime != 0) {
        CreateTime = other.CreateTime;
      }
      if (other.Content.Length != 0) {
        Content = other.Content;
      }
      if (other.ChatType != 0) {
        ChatType = other.ChatType;
      }
      if (other.GemId != 0) {
        GemId = other.GemId;
      }
      donatelist_.Add(other.donatelist_);
      if (other.ReceiveCount != 0) {
        ReceiveCount = other.ReceiveCount;
      }
      if (other.TotalCount != 0) {
        TotalCount = other.TotalCount;
      }
      if (other.NoticeId != 0) {
        NoticeId = other.NoticeId;
      }
      params_.Add(other.params_);
      if (other.NewUsername.Length != 0) {
        NewUsername = other.NewUsername;
      }
      if (other.NewNickname.Length != 0) {
        NewNickname = other.NewNickname;
      }
      if (other.NewHeadimg != 0) {
        NewHeadimg = other.NewHeadimg;
      }
      if (other.NewLevel != 0) {
        NewLevel = other.NewLevel;
      }
      if (other.NewScore != 0) {
        NewScore = other.NewScore;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            MessageId = input.ReadInt32();
            break;
          }
          case 18: {
            Username = input.ReadString();
            break;
          }
          case 26: {
            Nickname = input.ReadString();
            break;
          }
          case 32: {
            Headimg = input.ReadInt32();
            break;
          }
          case 40: {
            CreateTime = input.ReadInt32();
            break;
          }
          case 50: {
            Content = input.ReadString();
            break;
          }
          case 56: {
            chatType_ = (global::Protobuf.ChatType) input.ReadEnum();
            break;
          }
          case 64: {
            GemId = input.ReadInt32();
            break;
          }
          case 74: {
            donatelist_.AddEntriesFrom(input, _repeated_donatelist_codec);
            break;
          }
          case 80: {
            ReceiveCount = input.ReadInt32();
            break;
          }
          case 88: {
            TotalCount = input.ReadInt32();
            break;
          }
          case 96: {
            NoticeId = input.ReadInt32();
            break;
          }
          case 106: {
            params_.AddEntriesFrom(input, _repeated_params_codec);
            break;
          }
          case 114: {
            NewUsername = input.ReadString();
            break;
          }
          case 122: {
            NewNickname = input.ReadString();
            break;
          }
          case 128: {
            NewHeadimg = input.ReadInt32();
            break;
          }
          case 136: {
            NewLevel = input.ReadInt32();
            break;
          }
          case 144: {
            NewScore = input.ReadInt32();
            break;
          }
        }
      }
    }
  }
  /// <summary>
  ///  工会信息
  /// </summary>
  public sealed partial class FamilyMsg : pb::IMessage<FamilyMsg> {
    private static readonly pb::MessageParser<FamilyMsg> _parser = new pb::MessageParser<FamilyMsg>(() => new FamilyMsg());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<FamilyMsg> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Protobuf.CommonReflection.Descriptor.MessageTypes[10]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyMsg() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyMsg(FamilyMsg other) : this() {
      uid_ = other.uid_;
      name_ = other.name_;
      desc_ = other.desc_;
      icons_ = other.icons_.Clone();
      score_ = other.score_;
      scoreshopId_ = other.scoreshopId_;
      scoreshopExpired_ = other.scoreshopExpired_;
      freeJoin_ = other.freeJoin_;
      needScore_ = other.needScore_;
      members_ = other.members_.Clone();
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilyMsg Clone() {
      return new FamilyMsg(this);
    }
    /// <summary>Field number for the "uid" field.</summary>
    public const int UidFieldNumber = 1;
    private string uid_ = "";
    /// <summary>
    ///  工会ID,如果为空表示没有加入工会
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Uid {
      get { return uid_; }
      set {
        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private string name_ = "";
    /// <summary>
    ///  工会名
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 3;
    private string desc_ = "";
    /// <summary>
    ///  描述 公告
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Desc {
      get { return desc_; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "icons" field.</summary>
    public const int IconsFieldNumber = 4;
    private static readonly pb::FieldCodec<int> _repeated_icons_codec
        = pb::FieldCodec.ForInt32(34);
    private readonly pbc::RepeatedField<int> icons_ = new pbc::RepeatedField<int>();
    /// <summary>
    ///  徽章图标
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<int> Icons {
      get { return icons_; }
    }
    /// <summary>Field number for the "score" field.</summary>
    public const int ScoreFieldNumber = 5;
    private int score_;
    /// <summary>
    /// !工会积分
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Score {
      get { return score_; }
      set {
        score_ = value;
      }
    }
    /// <summary>Field number for the "scoreshopId" field.</summary>
    public const int ScoreshopIdFieldNumber = 6;
    private int scoreshopId_;
    /// <summary>
    ///  工会加成工会奖励的Id和过期时间,如果是0表示没有奖励
    ///  @see scoreshop 表
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ScoreshopId {
      get { return scoreshopId_; }
      set {
        scoreshopId_ = value;
      }
    }
    /// <summary>Field number for the "scoreshopExpired" field.</summary>
    public const int ScoreshopExpiredFieldNumber = 7;
    private int scoreshopExpired_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ScoreshopExpired {
      get { return scoreshopExpired_; }
      set {
        scoreshopExpired_ = value;
      }
    }
    /// <summary>Field number for the "freeJoin" field.</summary>
    public const int FreeJoinFieldNumber = 8;
    private int freeJoin_;
    /// <summary>
    /// ! 1 免费加入,2 需要批准,3 禁止加入
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FreeJoin {
      get { return freeJoin_; }
      set {
        freeJoin_ = value;
      }
    }
    /// <summary>Field number for the "needScore" field.</summary>
    public const int NeedScoreFieldNumber = 9;
    private int needScore_;
    /// <summary>
    ///  需要积分
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NeedScore {
      get { return needScore_; }
      set {
        needScore_ = value;
      }
    }
    /// <summary>Field number for the "members" field.</summary>
    public const int MembersFieldNumber = 10;
    private static readonly pb::FieldCodec<global::Protobuf.FamilyMemberMsg> _repeated_members_codec
        = pb::FieldCodec.ForMessage(82, global::Protobuf.FamilyMemberMsg.Parser);
    private readonly pbc::RepeatedField<global::Protobuf.FamilyMemberMsg> members_ = new pbc::RepeatedField<global::Protobuf.FamilyMemberMsg>();
    /// <summary>
    /// ! 成员
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Protobuf.FamilyMemberMsg> Members {
      get { return members_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as FamilyMsg);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FamilyMsg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Uid != other.Uid) return false;
      if (Name != other.Name) return false;
      if (Desc != other.Desc) return false;
      if(!icons_.Equals(other.icons_)) return false;
      if (Score != other.Score) return false;
      if (ScoreshopId != other.ScoreshopId) return false;
      if (ScoreshopExpired != other.ScoreshopExpired) return false;
      if (FreeJoin != other.FreeJoin) return false;
      if (NeedScore != other.NeedScore) return false;
      if(!members_.Equals(other.members_)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Desc.Length != 0) hash ^= Desc.GetHashCode();
      hash ^= icons_.GetHashCode();
      if (Score != 0) hash ^= Score.GetHashCode();
      if (ScoreshopId != 0) hash ^= ScoreshopId.GetHashCode();
      if (ScoreshopExpired != 0) hash ^= ScoreshopExpired.GetHashCode();
      if (FreeJoin != 0) hash ^= FreeJoin.GetHashCode();
      if (NeedScore != 0) hash ^= NeedScore.GetHashCode();
      hash ^= members_.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Uid.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Uid);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (Desc.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      icons_.WriteTo(output, _repeated_icons_codec);
      if (Score != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(Score);
      }
      if (ScoreshopId != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(ScoreshopId);
      }
      if (ScoreshopExpired != 0) {
        output.WriteRawTag(56);
        output.WriteInt32(ScoreshopExpired);
      }
      if (FreeJoin != 0) {
        output.WriteRawTag(64);
        output.WriteInt32(FreeJoin);
      }
      if (NeedScore != 0) {
        output.WriteRawTag(72);
        output.WriteInt32(NeedScore);
      }
      members_.WriteTo(output, _repeated_members_codec);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Uid.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
      }
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Desc.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      size += icons_.CalculateSize(_repeated_icons_codec);
      if (Score != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Score);
      }
      if (ScoreshopId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ScoreshopId);
      }
      if (ScoreshopExpired != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ScoreshopExpired);
      }
      if (FreeJoin != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FreeJoin);
      }
      if (NeedScore != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(NeedScore);
      }
      size += members_.CalculateSize(_repeated_members_codec);
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FamilyMsg other) {
      if (other == null) {
        return;
      }
      if (other.Uid.Length != 0) {
        Uid = other.Uid;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Desc.Length != 0) {
        Desc = other.Desc;
      }
      icons_.Add(other.icons_);
      if (other.Score != 0) {
        Score = other.Score;
      }
      if (other.ScoreshopId != 0) {
        ScoreshopId = other.ScoreshopId;
      }
      if (other.ScoreshopExpired != 0) {
        ScoreshopExpired = other.ScoreshopExpired;
      }
      if (other.FreeJoin != 0) {
        FreeJoin = other.FreeJoin;
      }
      if (other.NeedScore != 0) {
        NeedScore = other.NeedScore;
      }
      members_.Add(other.members_);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Uid = input.ReadString();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 34:
          case 32: {
            icons_.AddEntriesFrom(input, _repeated_icons_codec);
            break;
          }
          case 40: {
            Score = input.ReadInt32();
            break;
          }
          case 48: {
            ScoreshopId = input.ReadInt32();
            break;
          }
          case 56: {
            ScoreshopExpired = input.ReadInt32();
            break;
          }
          case 64: {
            FreeJoin = input.ReadInt32();
            break;
          }
          case 72: {
            NeedScore = input.ReadInt32();
            break;
          }
          case 82: {
            members_.AddEntriesFrom(input, _repeated_members_codec);
            break;
          }
        }
      }
    }
  }
  /// <summary>
  /// !用户查询工会的工会列表
  /// </summary>
  public sealed partial class FamilySearchItemMsg : pb::IMessage<FamilySearchItemMsg> {
    private static readonly pb::MessageParser<FamilySearchItemMsg> _parser = new pb::MessageParser<FamilySearchItemMsg>(() => new FamilySearchItemMsg());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<FamilySearchItemMsg> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Protobuf.CommonReflection.Descriptor.MessageTypes[11]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilySearchItemMsg() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilySearchItemMsg(FamilySearchItemMsg other) : this() {
      uid_ = other.uid_;
      name_ = other.name_;
      desc_ = other.desc_;
      icons_ = other.icons_.Clone();
      memberCount_ = other.memberCount_;
      isActive_ = other.isActive_;
      isFriendIn_ = other.isFriendIn_;
      isNew_ = other.isNew_;
      isApply_ = other.isApply_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FamilySearchItemMsg Clone() {
      return new FamilySearchItemMsg(this);
    }
    /// <summary>Field number for the "uid" field.</summary>
    public const int UidFieldNumber = 1;
    private string uid_ = "";
    /// <summary>
    ///  工会ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Uid {
      get { return uid_; }
      set {
        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private string name_ = "";
    /// <summary>
    ///  工会名
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "desc" field.</summary>
    public const int DescFieldNumber = 3;
    private string desc_ = "";
    /// <summary>
    ///  描述
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Desc {
      get { return desc_; }
      set {
        desc_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "icons" field.</summary>
    public const int IconsFieldNumber = 4;
    private static readonly pb::FieldCodec<int> _repeated_icons_codec
        = pb::FieldCodec.ForInt32(34);
    private readonly pbc::RepeatedField<int> icons_ = new pbc::RepeatedField<int>();
    /// <summary>
    ///  徽章图标
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<int> Icons {
      get { return icons_; }
    }
    /// <summary>Field number for the "memberCount" field.</summary>
    public const int MemberCountFieldNumber = 5;
    private int memberCount_;
    /// <summary>
    ///  当前人数
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int MemberCount {
      get { return memberCount_; }
      set {
        memberCount_ = value;
      }
    }
    /// <summary>Field number for the "isActive" field.</summary>
    public const int IsActiveFieldNumber = 6;
    private bool isActive_;
    /// <summary>
    ///  是否活跃
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsActive {
      get { return isActive_; }
      set {
        isActive_ = value;
      }
    }
    /// <summary>Field number for the "isFriendIn" field.</summary>
    public const int IsFriendInFieldNumber = 7;
    private bool isFriendIn_;
    /// <summary>
    ///  是否好友在此工会
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsFriendIn {
      get { return isFriendIn_; }
      set {
        isFriendIn_ = value;
      }
    }
    /// <summary>Field number for the "isNew" field.</summary>
    public const int IsNewFieldNumber = 8;
    private bool isNew_;
    /// <summary>
    ///  是否是新公会
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsNew {
      get { return isNew_; }
      set {
        isNew_ = value;
      }
    }
    /// <summary>Field number for the "isApply" field.</summary>
    public const int IsApplyFieldNumber = 9;
    private bool isApply_;
    /// <summary>
    ///  是否已申请
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsApply {
      get { return isApply_; }
      set {
        isApply_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as FamilySearchItemMsg);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FamilySearchItemMsg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Uid != other.Uid) return false;
      if (Name != other.Name) return false;
      if (Desc != other.Desc) return false;
      if(!icons_.Equals(other.icons_)) return false;
      if (MemberCount != other.MemberCount) return false;
      if (IsActive != other.IsActive) return false;
      if (IsFriendIn != other.IsFriendIn) return false;
      if (IsNew != other.IsNew) return false;
      if (IsApply != other.IsApply) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Desc.Length != 0) hash ^= Desc.GetHashCode();
      hash ^= icons_.GetHashCode();
      if (MemberCount != 0) hash ^= MemberCount.GetHashCode();
      if (IsActive != false) hash ^= IsActive.GetHashCode();
      if (IsFriendIn != false) hash ^= IsFriendIn.GetHashCode();
      if (IsNew != false) hash ^= IsNew.GetHashCode();
      if (IsApply != false) hash ^= IsApply.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Uid.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Uid);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (Desc.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Desc);
      }
      icons_.WriteTo(output, _repeated_icons_codec);
      if (MemberCount != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(MemberCount);
      }
      if (IsActive != false) {
        output.WriteRawTag(48);
        output.WriteBool(IsActive);
      }
      if (IsFriendIn != false) {
        output.WriteRawTag(56);
        output.WriteBool(IsFriendIn);
      }
      if (IsNew != false) {
        output.WriteRawTag(64);
        output.WriteBool(IsNew);
      }
      if (IsApply != false) {
        output.WriteRawTag(72);
        output.WriteBool(IsApply);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Uid.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
      }
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Desc.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Desc);
      }
      size += icons_.CalculateSize(_repeated_icons_codec);
      if (MemberCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MemberCount);
      }
      if (IsActive != false) {
        size += 1 + 1;
      }
      if (IsFriendIn != false) {
        size += 1 + 1;
      }
      if (IsNew != false) {
        size += 1 + 1;
      }
      if (IsApply != false) {
        size += 1 + 1;
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FamilySearchItemMsg other) {
      if (other == null) {
        return;
      }
      if (other.Uid.Length != 0) {
        Uid = other.Uid;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Desc.Length != 0) {
        Desc = other.Desc;
      }
      icons_.Add(other.icons_);
      if (other.MemberCount != 0) {
        MemberCount = other.MemberCount;
      }
      if (other.IsActive != false) {
        IsActive = other.IsActive;
      }
      if (other.IsFriendIn != false) {
        IsFriendIn = other.IsFriendIn;
      }
      if (other.IsNew != false) {
        IsNew = other.IsNew;
      }
      if (other.IsApply != false) {
        IsApply = other.IsApply;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Uid = input.ReadString();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 26: {
            Desc = input.ReadString();
            break;
          }
          case 34:
          case 32: {
            icons_.AddEntriesFrom(input, _repeated_icons_codec);
            break;
          }
          case 40: {
            MemberCount = input.ReadInt32();
            break;
          }
          case 48: {
            IsActive = input.ReadBool();
            break;
          }
          case 56: {
            IsFriendIn = input.ReadBool();
            break;
          }
          case 64: {
            IsNew = input.ReadBool();
            break;
          }
          case 72: {
            IsApply = input.ReadBool();
            break;
          }
        }
      }
    }
  }
  #endregion
}
Assets/Scripts/Net/NetExtends/Game.cs
Diff too large
Assets/Scripts/Net/NetExtends/NetMapping.cs
@@ -118,6 +118,62 @@
            
            NetMapping.packetReflections.Add((Opcode)2049, typeof(TakeArenaBox_S2C));
            
            NetMapping.packetReflections.Add((Opcode)2050, typeof(FamilySearch_C2S));
            NetMapping.packetReflections.Add((Opcode)2051, typeof(FamilySearch_S2C));
            NetMapping.packetReflections.Add((Opcode)2052, typeof(FamilyPlayerOnline_S2C));
            NetMapping.packetReflections.Add((Opcode)2053, typeof(FamilyCreate_C2S));
            NetMapping.packetReflections.Add((Opcode)2054, typeof(FamilyJoin_C2S));
            NetMapping.packetReflections.Add((Opcode)2055, typeof(FamilyJoin_S2C));
            NetMapping.packetReflections.Add((Opcode)2056, typeof(FamilyGetChat_C2S));
            NetMapping.packetReflections.Add((Opcode)2057, typeof(FamilyGetChat_S2C));
            NetMapping.packetReflections.Add((Opcode)2058, typeof(FamilyStartChat_C2S));
            NetMapping.packetReflections.Add((Opcode)2059, typeof(FamilyStartChat_S2C));
            NetMapping.packetReflections.Add((Opcode)2060, typeof(FamilyStartDonate_C2S));
            NetMapping.packetReflections.Add((Opcode)2061, typeof(FamilyStartDonate_S2C));
            NetMapping.packetReflections.Add((Opcode)2062, typeof(FamilyQuit_C2S));
            NetMapping.packetReflections.Add((Opcode)2063, typeof(FamilyQuit_S2C));
            NetMapping.packetReflections.Add((Opcode)2064, typeof(FamilyAgreeJoin_C2S));
            NetMapping.packetReflections.Add((Opcode)2065, typeof(FamilyAgreeJoin_S2C));
            NetMapping.packetReflections.Add((Opcode)2066, typeof(FamilyKickUser_C2S));
            NetMapping.packetReflections.Add((Opcode)2067, typeof(FamilyKickUser_S2C));
            NetMapping.packetReflections.Add((Opcode)2068, typeof(FamilyTransLeader_C2S));
            NetMapping.packetReflections.Add((Opcode)2069, typeof(FamilyTransLeader_S2C));
            NetMapping.packetReflections.Add((Opcode)2070, typeof(FamilyGetDonateShop_C2S));
            NetMapping.packetReflections.Add((Opcode)2071, typeof(FamilyGetDonateShop_S2C));
            NetMapping.packetReflections.Add((Opcode)2072, typeof(FamilyBuyDonateShop_C2S));
            NetMapping.packetReflections.Add((Opcode)2073, typeof(FamilyBuyDonateShop_S2C));
            NetMapping.packetReflections.Add((Opcode)2074, typeof(FamilyGetScoreShop_C2S));
            NetMapping.packetReflections.Add((Opcode)2075, typeof(FamilyGetScoreShop_S2C));
            NetMapping.packetReflections.Add((Opcode)2076, typeof(FamilyBuyScoreShop_C2S));
            NetMapping.packetReflections.Add((Opcode)2077, typeof(FamilyBuyScoreShop_S2C));
            
Assets/Scripts/Net/NetExtends/Opcode.cs
@@ -22,7 +22,7 @@
    static OpcodeReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CgxvcGNvZGUucHJvdG8SCHByb3RvYnVmKq0JCgZPcGNvZGUSCQoFQmVnaW4Q",
            "CgxvcGNvZGUucHJvdG8SCHByb3RvYnVmKokPCgZPcGNvZGUSCQoFQmVnaW4Q",
            "ABIOCglMb2dpbl9DMlMQ0Q8SDgoJTG9naW5fUzJDENIPEhUKEFNldEdlbURl",
            "Y2tJZF9DMlMQ0w8SFQoQU2V0R2VtRGVja0lkX1MyQxDUDxIUCg9Nb3ZlR2Vt",
            "RGVja19DMlMQ1Q8SFAoPTW92ZUdlbURlY2tfUzJDENYPEhIKDUdNQ29tbWFu",
@@ -49,7 +49,23 @@
            "dGxlUGFzc0xldmVsX0MyUxD8DxIbChZCdXlCYXR0bGVQYXNzTGV2ZWxfUzJD",
            "EP0PEhcKElVuTG9ja0FyZW5hQm94X0MyUxD+DxIXChJVbkxvY2tBcmVuYUJv",
            "eF9TMkMQ/w8SFQoQVGFrZUFyZW5hQm94X0MyUxCAEBIVChBUYWtlQXJlbmFC",
            "b3hfUzJDEIEQYgZwcm90bzM="));
            "b3hfUzJDEIEQEhUKEEZhbWlseVNlYXJjaF9DMlMQghASFQoQRmFtaWx5U2Vh",
            "cmNoX1MyQxCDEBIbChZGYW1pbHlQbGF5ZXJPbmxpbmVfUzJDEIQQEhUKEEZh",
            "bWlseUNyZWF0ZV9DMlMQhRASEwoORmFtaWx5Sm9pbl9DMlMQhhASEwoORmFt",
            "aWx5Sm9pbl9TMkMQhxASFgoRRmFtaWx5R2V0Q2hhdF9DMlMQiBASFgoRRmFt",
            "aWx5R2V0Q2hhdF9TMkMQiRASGAoTRmFtaWx5U3RhcnRDaGF0X0MyUxCKEBIY",
            "ChNGYW1pbHlTdGFydENoYXRfUzJDEIsQEhoKFUZhbWlseVN0YXJ0RG9uYXRl",
            "X0MyUxCMEBIaChVGYW1pbHlTdGFydERvbmF0ZV9TMkMQjRASEwoORmFtaWx5",
            "UXVpdF9DMlMQjhASEwoORmFtaWx5UXVpdF9TMkMQjxASGAoTRmFtaWx5QWdy",
            "ZWVKb2luX0MyUxCQEBIYChNGYW1pbHlBZ3JlZUpvaW5fUzJDEJEQEhcKEkZh",
            "bWlseUtpY2tVc2VyX0MyUxCSEBIXChJGYW1pbHlLaWNrVXNlcl9TMkMQkxAS",
            "GgoVRmFtaWx5VHJhbnNMZWFkZXJfQzJTEJQQEhoKFUZhbWlseVRyYW5zTGVh",
            "ZGVyX1MyQxCVEBIcChdGYW1pbHlHZXREb25hdGVTaG9wX0MyUxCWEBIcChdG",
            "YW1pbHlHZXREb25hdGVTaG9wX1MyQxCXEBIcChdGYW1pbHlCdXlEb25hdGVT",
            "aG9wX0MyUxCYEBIcChdGYW1pbHlCdXlEb25hdGVTaG9wX1MyQxCZEBIbChZG",
            "YW1pbHlHZXRTY29yZVNob3BfQzJTEJoQEhsKFkZhbWlseUdldFNjb3JlU2hv",
            "cF9TMkMQmxASGwoWRmFtaWx5QnV5U2NvcmVTaG9wX0MyUxCcEBIbChZGYW1p",
            "bHlCdXlTY29yZVNob3BfUzJDEJ0QYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Protobuf.Opcode), }, null));
@@ -109,6 +125,34 @@
    [pbr::OriginalName("UnLockArenaBox_S2C")] UnLockArenaBoxS2C = 2047,
    [pbr::OriginalName("TakeArenaBox_C2S")] TakeArenaBoxC2S = 2048,
    [pbr::OriginalName("TakeArenaBox_S2C")] TakeArenaBoxS2C = 2049,
    [pbr::OriginalName("FamilySearch_C2S")] FamilySearchC2S = 2050,
    [pbr::OriginalName("FamilySearch_S2C")] FamilySearchS2C = 2051,
    [pbr::OriginalName("FamilyPlayerOnline_S2C")] FamilyPlayerOnlineS2C = 2052,
    [pbr::OriginalName("FamilyCreate_C2S")] FamilyCreateC2S = 2053,
    [pbr::OriginalName("FamilyJoin_C2S")] FamilyJoinC2S = 2054,
    [pbr::OriginalName("FamilyJoin_S2C")] FamilyJoinS2C = 2055,
    [pbr::OriginalName("FamilyGetChat_C2S")] FamilyGetChatC2S = 2056,
    [pbr::OriginalName("FamilyGetChat_S2C")] FamilyGetChatS2C = 2057,
    [pbr::OriginalName("FamilyStartChat_C2S")] FamilyStartChatC2S = 2058,
    [pbr::OriginalName("FamilyStartChat_S2C")] FamilyStartChatS2C = 2059,
    [pbr::OriginalName("FamilyStartDonate_C2S")] FamilyStartDonateC2S = 2060,
    [pbr::OriginalName("FamilyStartDonate_S2C")] FamilyStartDonateS2C = 2061,
    [pbr::OriginalName("FamilyQuit_C2S")] FamilyQuitC2S = 2062,
    [pbr::OriginalName("FamilyQuit_S2C")] FamilyQuitS2C = 2063,
    [pbr::OriginalName("FamilyAgreeJoin_C2S")] FamilyAgreeJoinC2S = 2064,
    [pbr::OriginalName("FamilyAgreeJoin_S2C")] FamilyAgreeJoinS2C = 2065,
    [pbr::OriginalName("FamilyKickUser_C2S")] FamilyKickUserC2S = 2066,
    [pbr::OriginalName("FamilyKickUser_S2C")] FamilyKickUserS2C = 2067,
    [pbr::OriginalName("FamilyTransLeader_C2S")] FamilyTransLeaderC2S = 2068,
    [pbr::OriginalName("FamilyTransLeader_S2C")] FamilyTransLeaderS2C = 2069,
    [pbr::OriginalName("FamilyGetDonateShop_C2S")] FamilyGetDonateShopC2S = 2070,
    [pbr::OriginalName("FamilyGetDonateShop_S2C")] FamilyGetDonateShopS2C = 2071,
    [pbr::OriginalName("FamilyBuyDonateShop_C2S")] FamilyBuyDonateShopC2S = 2072,
    [pbr::OriginalName("FamilyBuyDonateShop_S2C")] FamilyBuyDonateShopS2C = 2073,
    [pbr::OriginalName("FamilyGetScoreShop_C2S")] FamilyGetScoreShopC2S = 2074,
    [pbr::OriginalName("FamilyGetScoreShop_S2C")] FamilyGetScoreShopS2C = 2075,
    [pbr::OriginalName("FamilyBuyScoreShop_C2S")] FamilyBuyScoreShopC2S = 2076,
    [pbr::OriginalName("FamilyBuyScoreShop_S2C")] FamilyBuyScoreShopS2C = 2077,
  }
  #endregion
Assets/Scripts/Net/NetExtends/Table.cs
@@ -42,11 +42,14 @@
            "endless_buff.json",
            "endless_enemy.json",
            "endless_port.json",
            "scoreshop.json",
            "donateshop.json",
            "gemcost.json",
            "buffinfo.json",
            "skilllevelinfo.json",
            "arena.json",
            "fuckword.json",
            "notice.json",
            "storearea.json",
            "store.json",
            "goldInfo.json",
@@ -200,6 +203,28 @@
                    break;
               
            
                case "scoreshop":
                    //allData.Clear();
                    foreach (JsonData item in data)
                    {
                        scoreshop tmp = scoreshop.CreateFromJson(item);
                        allData.Add(tmp as tabledata);
                    }
                    JsonDataCenter.allData.Add(tablename, allData);
                    break;
                case "donateshop":
                    //allData.Clear();
                    foreach (JsonData item in data)
                    {
                        donateshop tmp = donateshop.CreateFromJson(item);
                        allData.Add(tmp as tabledata);
                    }
                    JsonDataCenter.allData.Add(tablename, allData);
                    break;
                case "gemcost":
                    //allData.Clear();
                    foreach (JsonData item in data)
@@ -249,6 +274,17 @@
                    foreach (JsonData item in data)
                    {
                        fuckword tmp = fuckword.CreateFromJson(item);
                        allData.Add(tmp as tabledata);
                    }
                    JsonDataCenter.allData.Add(tablename, allData);
                    break;
                case "notice":
                    //allData.Clear();
                    foreach (JsonData item in data)
                    {
                        notice tmp = notice.CreateFromJson(item);
                        allData.Add(tmp as tabledata);
                    }
                    JsonDataCenter.allData.Add(tablename, allData);
@@ -805,6 +841,12 @@
        // 出现关卡上限
        public int upper_level;
        
        // 对应资源
        public int image;
        // 品质
        public int rare;
        public static endless_buff CreateFromJson(JsonData item)
@@ -820,6 +862,8 @@
            _endless_buff.brief = GameUtils.GetString(item[index++].ToString()); 
            _endless_buff.down_level = int.Parse(GameUtils.GetString(item[index++].ToString())); 
            _endless_buff.upper_level = int.Parse(GameUtils.GetString(item[index++].ToString())); 
            _endless_buff.image = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _endless_buff.rare = int.Parse(GameUtils.GetString(item[index++].ToString()));
            
            return _endless_buff;
        }
@@ -842,7 +886,7 @@
        public int type;
        
        // 血量增幅
        public int hp_rate;
        public float hp_rate;
        
        // 速度增幅
        public float speed_rate;
@@ -863,7 +907,7 @@
            _endless_enemy.id = int.Parse(GameUtils.GetString(item[index++].ToString())); 
            _endless_enemy.name = GameUtils.GetString(item[index++].ToString()); 
            _endless_enemy.type = int.Parse(GameUtils.GetString(item[index++].ToString())); 
            _endless_enemy.hp_rate = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _endless_enemy.hp_rate = float.Parse(GameUtils.GetString(item[index++].ToString()));
            _endless_enemy.speed_rate = float.Parse(GameUtils.GetString(item[index++].ToString())); 
            _endless_enemy.coin_rate = int.Parse(GameUtils.GetString(item[index++].ToString())); 
            _endless_enemy.resource = int.Parse(GameUtils.GetString(item[index++].ToString())); 
@@ -916,10 +960,10 @@
        public int cooldown;
        
        // 怪物掉落
        public reward drop;
        public List<reward> drop;
        
        // 掉落概率
        public int drop_rate;
        public List<int> drop_rate;
        
@@ -940,10 +984,104 @@
            _endless_port.b_speed = float.Parse(GameUtils.GetString(item[index++].ToString())); 
            _endless_port.b_coin = int.Parse(GameUtils.GetString(item[index++].ToString())); 
            _endless_port.cooldown = int.Parse(GameUtils.GetString(item[index++].ToString())); 
            _endless_port.drop = GameUtils.GetReward(item[index++]);
            _endless_port.drop_rate = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _endless_port.drop = GameUtils.GetRewardList(item[index++]);
            _endless_port.drop_rate = GameUtils.GetIntList(item[index++]);
            
            return _endless_port;
        }
    }
    //! 生成文件 G_公会积分商店.xlsx
    public class scoreshop : tabledata {
        public int getid(){
            return id;
        }
        // 标识符
        public int id;
        // 道具名称
        public string name;
        // 效果描述
        public string description;
        // 有效时间s
        public int time;
        // 效果类型
        public int buff;
        // 效果数值
        public float buffnum;
        // 价格
        public int price;
        // 奖励上限
        public int rewardlimit;
        // 限购次数
        public int purchaselimit;
        public static scoreshop CreateFromJson(JsonData item)
        {
            scoreshop _scoreshop = new scoreshop();
            int index = 0;
            _scoreshop.id = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _scoreshop.name = GameUtils.GetString(item[index++].ToString());
            _scoreshop.description = GameUtils.GetString(item[index++].ToString());
            _scoreshop.time = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _scoreshop.buff = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _scoreshop.buffnum = float.Parse(GameUtils.GetString(item[index++].ToString()));
            _scoreshop.price = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _scoreshop.rewardlimit = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _scoreshop.purchaselimit = int.Parse(GameUtils.GetString(item[index++].ToString()));
            return _scoreshop;
        }
    }
    //! 生成文件 G_工会捐赠商店.xlsx
    public class donateshop : tabledata {
        public int getid(){
            return id;
        }
        // 标识符
        public int id;
        // 道具名称
        public string name;
        // 道具奖励数量
        public List<reward> reward;
        // 价格
        public int price;
        // 限购次数
        public int purchaselimit;
        public static donateshop CreateFromJson(JsonData item)
        {
            donateshop _donateshop = new donateshop();
            int index = 0;
            _donateshop.id = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _donateshop.name = GameUtils.GetString(item[index++].ToString());
            _donateshop.reward = GameUtils.GetRewardList(item[index++]);
            _donateshop.price = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _donateshop.purchaselimit = int.Parse(GameUtils.GetString(item[index++].ToString()));
            return _donateshop;
        }
    }
@@ -1127,6 +1265,37 @@
    }
    //! 生成文件 N_通知消息字符串(notice).xlsx
    public class notice : tabledata {
        public int getid(){
            return id;
        }
        // id
        public int id;
        // 键
        public string key;
        // 说明
        public string dec;
        public static notice CreateFromJson(JsonData item)
        {
            notice _notice = new notice();
            int index = 0;
            _notice.id = int.Parse(GameUtils.GetString(item[index++].ToString()));
            _notice.key = GameUtils.GetString(item[index++].ToString());
            _notice.dec = GameUtils.GetString(item[index++].ToString());
            return _notice;
        }
    }
    //! 生成文件 S_商店分区表 .xlsx
    public class storearea : tabledata {
        public int getid(){
Assets/Scripts/TowerDefense/Economy/LootDrop.cs
@@ -5,87 +5,94 @@
namespace TowerDefense.Economy
{
    /// <summary>
    /// A class that adds money to the currency when the attached DamagableBehaviour dies
    /// 每一个Agent都会有一个LootDrop类,对应的DamageableBehaviour分别派生自:
    /// Agent--Targetable--DamageableBehaviour
    /// </summary>
    [RequireComponent(typeof(DamageableBehaviour))]
    public class LootDrop : MonoBehaviour
    {
        /// <summary>
        /// The amount of loot/currency dropped when object "dies"
        /// </summary>
        public int lootDropped = 1;
    /// <summary>
    /// A class that adds money to the currency when the attached DamagableBehaviour dies
    /// 每一个Agent都会有一个LootDrop类,对应的DamageableBehaviour分别派生自:
    /// Agent--Targetable--DamageableBehaviour
    /// </summary>
    [RequireComponent(typeof(DamageableBehaviour))]
    public class LootDrop : MonoBehaviour
    {
        /// <summary>
        /// The amount of loot/currency dropped when object "dies"
        /// </summary>
        public int lootDropped = 1;
        /// <summary>
        /// The attached DamagableBehaviour
        /// </summary>
        protected DamageableBehaviour m_DamageableBehaviour;
        /// <summary>
        /// The attached DamagableBehaviour
        /// </summary>
        protected DamageableBehaviour m_DamageableBehaviour;
        /// <summary>
        /// Caches attached DamageableBehaviour
        /// </summary>
        protected virtual void OnEnable()
        {
            if (m_DamageableBehaviour == null)
            {
                m_DamageableBehaviour = GetComponent<DamageableBehaviour>();
            }
            m_DamageableBehaviour.configuration.died += OnDeath;
        }
        /// <summary>
        /// Unsubscribed from the <see cref="m_DamageableBehaviour"/> died event
        /// </summary>
        protected virtual void OnDisable()
        {
            m_DamageableBehaviour.configuration.died -= OnDeath;
        }
        /// <summary>
        /// The callback for when the attached object "dies".
        /// Add <see cref="lootDropped"/> to current currency
        /// </summary>
        protected virtual void OnDeath(HealthChangeInfo info)
        {
            m_DamageableBehaviour.configuration.died -= OnDeath;
            //
            // 当前LootDrop所在的Agent死亡后,给全局的CurrencyManager增加金币.
            // 当前Agent死亡之后,需要在对手盘加入新的Agent
            LevelManager levelManager = LevelManager.instance;
            OpponentMgr opmgr = OpponentMgr.instance;
            if (levelManager == null)
                return;
            Agent agent = gameObject.GetComponent<Agent>();
            if( (agent!=null) && agent.opponentAgent)
            {
                if (opmgr == null)
                {
                    return;
                }
                opmgr.currency.AddCurrency(lootDropped);
                /* 修改为不再死亡后发布怪物到对方视野.
                if( agent.bRespawn)
                {
                    AgentSetData sd = agent.mAgentData;
                    int attid = OpponentMgr.instance.GetTowerAttID(agent.waveLineID);
                    levelManager.waveManager.SpawnAgent(agent.waveLineID,sd.hp,sd.speed, attid );
                }*/
            }
            else
        /// <summary>
        /// Caches attached DamageableBehaviour
        /// </summary>
        protected virtual void OnEnable()
        {
            if (m_DamageableBehaviour == null)
            {
                levelManager.currency.AddCurrency(lootDropped);
                /*
                if (agent.bRespawn)
                {
                    AgentSetData sd = agent.mAgentData;
                    int attid = levelManager.GetTowerAttID(agent.waveLineID);
                    opmgr.m_WaveManager.SpawnAgent(agent.waveLineID, sd.hp,sd.speed, attid );
                }*/
            }
                m_DamageableBehaviour = GetComponent<DamageableBehaviour>();
            }
            m_DamageableBehaviour.configuration.died += OnDeath;
        }
        }
    }
        /// <summary>
        /// Unsubscribed from the <see cref="m_DamageableBehaviour"/> died event
        /// </summary>
        protected virtual void OnDisable()
        {
            m_DamageableBehaviour.configuration.died -= OnDeath;
        }
        /// <summary>
        /// The callback for when the attached object "dies".
        /// Add <see cref="lootDropped"/> to current currency
        /// </summary>
        protected virtual void OnDeath(HealthChangeInfo info)
        {
            m_DamageableBehaviour.configuration.died -= OnDeath;
            if (LevelManager.instanceExists)
            {
                // 当前LootDrop所在的Agent死亡后,给全局的CurrencyManager增加金币.
                // 当前Agent死亡之后,需要在对手盘加入新的Agent
                LevelManager levelManager = LevelManager.instance;
                OpponentMgr opmgr = OpponentMgr.instance;
                if (levelManager == null)
                    return;
                Agent agent = gameObject.GetComponent<Agent>();
                if ((agent != null) && agent.opponentAgent)
                {
                    if (opmgr == null)
                    {
                        return;
                    }
                    opmgr.currency.AddCurrency(lootDropped);
                    /* 修改为不再死亡后发布怪物到对方视野.
                    if( agent.bRespawn)
                    {
                        AgentSetData sd = agent.mAgentData;
                        int attid = OpponentMgr.instance.GetTowerAttID(agent.waveLineID);
                        levelManager.waveManager.SpawnAgent(agent.waveLineID,sd.hp,sd.speed, attid );
                    }*/
                }
                else
                {
                    levelManager.currency.AddCurrency(lootDropped);
                    /*
                    if (agent.bRespawn)
                    {
                        AgentSetData sd = agent.mAgentData;
                        int attid = levelManager.GetTowerAttID(agent.waveLineID);
                        opmgr.m_WaveManager.SpawnAgent(agent.waveLineID, sd.hp,sd.speed, attid );
                    }*/
                }
            }
            else if (EndlessLevelManager.instanceExists)
            {
                Agent agent = gameObject.GetComponent<Agent>();
                if (agent != null)
                    EndlessLevelManager.instance.Currency.AddCurrency(lootDropped);
            }
        }
    }
}
Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
@@ -11,6 +11,7 @@
using System.Collections;
using System.Collections.Generic;
using TowerDefense.Nodes;
using TowerDefense.UI.HUD;
namespace TowerDefense.Level
{
@@ -108,11 +109,6 @@
        /// Fired when all the waves are done and there are no more enemies left
        /// </summary>
        public event Action LevelCompleted;
        /// <summary>
        /// Fired when all of the home bases are destroyed
        /// </summary>
        public event Action LevelFailed;
        /// <summary>
        /// Fired when the level state is changed - first parameter is the old state, second parameter is the new state
@@ -283,6 +279,12 @@
            }
        }
        private void Start()
        {
            EndlessBuffSelect.instance.BuffSelectCompleted += OnBuffSelectCompleted;
            EndlessGameUI.instance.GameOverEvent += SafelyCallLevelCompleted;
        }
        /// <summary>
        /// Updates the currency gain controller
        /// </summary>
@@ -297,6 +299,7 @@
            {
                isBuffSelectCompleted = true;
                WaveManager.StartWaves(CurrentLevel);
                EndlessUIStart.instance.Restart();
            }
            // 本关卡所有波次全部生成完成 && 敌人全部被清理了,然后就去尝试进入下一关
@@ -384,14 +387,9 @@
                return;
            }
            EndlessUIStart.instance.SelectBuffUI.SetActive(true);
            for (int i = 0; i < 3; ++i)
            {
                GameObject descObj = GameObject.Find($"BuffDesc{i}");
                Text obj = descObj.GetComponent<Text>();
                obj.text = list[i].Config.brief;
            }
            EndlessUIStart.instance.Pause();
            EndlessBuffSelect.instance.Refresh(list);
            EndlessBuffSelect.instance.ShowBuffUI();
        }
        /// <summary>
@@ -400,7 +398,6 @@
        /// <param name="index"></param>
        public void OnBuffSelectCompleted(int index)
        {
            EndlessUIStart.instance.SelectBuffUI.SetActive(false);
            isBuffSelectCompleted = false;
            EndlessBuffManager.instance.AddBuff(EndlessBuffData.GetBuffByIndex(index));
        }
@@ -430,7 +427,7 @@
                    ChangeLevelState(LevelState.Win);
                    break;
                case LevelState.Lose:
                    SafelyCallLevelFailed();
                    SafelyCallLevelCompleted();
                    break;
                case LevelState.Win:
                    SafelyCallLevelCompleted();
@@ -453,11 +450,11 @@
                homeBaseDestroyed();
            }
            // If there are no home bases left and the level is not over then set the level to lost
            if ((NumberOfHomeBasesLeft < 3) && !isGameOver)
            {
                ChangeLevelState(LevelState.Lose);
            }
            // // If there are no home bases left and the level is not over then set the level to lost
            // if ((NumberOfHomeBasesLeft < 3) && !isGameOver)
            // {
            //     ChangeLevelState(LevelState.Lose);
            // }
        }
        /// <summary>
@@ -482,15 +479,6 @@
        {
            if (DecrementEnemies != null)
                DecrementEnemies(1);
        }
        /// <summary>
        /// Calls the <see cref="levelFailed"/> event
        /// </summary>
        protected virtual void SafelyCallLevelFailed()
        {
            if (LevelFailed != null)
                LevelFailed();
        }
        /// <summary>
Assets/Scripts/TowerDefense/Level/EndlessWave.cs
@@ -86,7 +86,7 @@
            spawnedEnemies = 0;
            SpawnCurrent();
            spawnTimer = new RepeatingTimer(data.Config.interval / 3000f, SpawnCurrent);
            spawnTimer = new RepeatingTimer(data.Config.interval / 1000f, SpawnCurrent);
            StartTimer(spawnTimer);
        }
Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs
New file
@@ -0,0 +1,51 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Core.Utilities;
using System;
/**
 * 无尽模式查看已经获得道具
 * @Author: chenxin
 * @Date: 2020-10-19 16:53:29
 */
namespace KTGMGemClient
{
    public class EndlessViewObtainedProps : Singleton<EndlessViewObtainedProps>
    {
        /// <summary>
        /// 奖励信息界面
        /// </summary>
        public GameObject RewardInfoUI;
        /// <summary>
        /// 奖励信息界面是否正在展示
        /// </summary>
        private bool isShow;
        // Start is called before the first frame update
        private void Start()
        {
        }
        private void OnEnable()
        {
            RewardInfoUI.SetActive(false);
            isShow = false;
        }
        // Update is called once per frame
        private void Update()
        {
        }
        public void OnClick()
        {
            isShow = !isShow;
            RewardInfoUI.SetActive(isShow);
        }
    }
}
Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs.meta
copy from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta copy to Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs.meta
File was copied from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 77846cbd0fd353546b25fc2e0d6ad952
guid: 499223bcef37be1429008117fbff70cd
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
@@ -289,7 +289,7 @@
        void Update()
        {
            if (m_arrCoinGenTime == null) return;
            if (m_arrCoinGenTime == null || !EndlessUIStart.instance.IsGameRunning) return;
            float delta = Time.deltaTime;
            float timePe = JsonDataCenter.GOLD_TIME / 1000.0f;
Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs
New file
@@ -0,0 +1,101 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Core.Utilities;
using System;
/**
 * 选择buff脚本
 * @Author: chenxin
 * @Date: 2020-10-19 15:55:46
 */
namespace KTGMGemClient
{
    public class EndlessBuffSelect : Singleton<EndlessBuffSelect>
    {
        public Text Prompt;
        public List<SelectBuffIcon> IconList;
        public List<Sprite> SpriteList;
        /// <summary>
        /// buff是否选中完成
        /// </summary>
        private bool isCompleted;
        public event Action<int> BuffSelectCompleted;
        private int SelectedIndex;
        // Start is called before the first frame update
        private void Start()
        {
            for (int i = 0; i < IconList.Count; ++i)
            {
                IconList[i].OnSelectBuffCompleted += OnClick;
            }
        }
        private void OnEnable()
        {
            isCompleted = false;
            Prompt.text = "点击选择buff";
            for (int i = 0; i < IconList.Count; ++i)
            {
                IconList[i].SetIcon(SpriteList[i]);
                IconList[i].SetState(EndlessBuffSelectState.Normal);
            }
        }
        public void OnClick(int index)
        {
            if (isCompleted) return;
            isCompleted = true;
            SelectedIndex = index;
            Prompt.text = "选择buff成功";
            for (int i = 0; i < IconList.Count; ++i)
            {
                if (index == i)
                    IconList[i].SetState(EndlessBuffSelectState.Selected);
                else
                    IconList[i].SetState(EndlessBuffSelectState.Unselected);
            }
            StartCoroutine(DelayToClose());
        }
        public void ShowBuffUI()
        {
            gameObject.SetActive(true);
        }
        public void HideBuffUI()
        {
            gameObject.SetActive(false);
        }
        private IEnumerator DelayToClose()
        {
            yield return new WaitForSeconds(0.5f);
            HideBuffUI();
            if (BuffSelectCompleted != null)
                BuffSelectCompleted(SelectedIndex);
        }
        public void Refresh(List<EndlessBuffConfig> list)
        {
            for (int i = 0; i < IconList.Count; ++i)
            {
                IconList[i].SetName(list[i].Config.name);
                IconList[i].SetEffect(list[i].Config.brief);
                IconList[i].SetRare(list[i].Config.rare);
            }
        }
    }
}
Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs.meta
File was renamed from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 77846cbd0fd353546b25fc2e0d6ad952
guid: 04afc9deff437494a9f503d7f59ccc83
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs
New file
@@ -0,0 +1,106 @@
using UnityEngine;
using TowerDefense.UI.HUD;
using DG.Tweening;
using TowerDefense.Towers.Placement;
using UnityEngine.SceneManagement;
using TowerDefense.Level;
/**
 * 无尽模式结算
 * @Author: chenxin
 * @Date: 2020-10-19 17:11:03
 */
namespace KTGMGemClient
{
    public class EndlessSettlement : MonoBehaviour
    {
        public AudioClip VictoryAudio;
        public AudioSource AudioSource;
        /// <summary>
        /// Name of level select screen
        /// </summary>
        public string menuSceneName = "MainManuScene";
        /// <summary>
        /// Reference to the <see cref="EndlessLevelManager" />
        /// </summary>
        protected EndlessLevelManager levelManager;
        // Start is called before the first frame update
        private void Start()
        {
            LazyLoad();
            levelManager.LevelCompleted += Victory;
        }
        /// <summary>
        /// 回到主界面的功能,暂时也使用重新开启新关卡.
        /// </summary>
        public void ReturnToMainMenu()
        {
            // 清空所有Tween数据:
            DOTween.Clear();
            EndlessUIStart.bFirstLoaded = false;
            EndlessUIStart.bGameStart = false;
            TowerPlacementGridEndless.GRID_OPENCASH = 100;
            SafelyUnsubscribe();
            SceneManager.LoadScene(menuSceneName);
        }
        /// <summary>
        /// Shows the end game screen
        /// </summary>
        protected void OpenEndGameScreen(bool victory)
        {
            if (!EndlessGameUI.instanceExists) return;
            if (EndlessGameUI.instance.state == EndlessGameUI.State.Building)
                EndlessGameUI.instance.CancelGhostPlacement();
            gameObject.SetActive(true);
        }
        /// <summary>
        /// Occurs when the level is sucessfully completed
        /// </summary>
        protected void Victory()
        {
            EndlessUIStart.instance.Pause();
            OpenEndGameScreen(true);
            if (VictoryAudio != null && AudioSource != null)
                AudioSource.PlayOneShot(VictoryAudio);
        }
        /// <summary>
        /// Safely unsubscribes from <see cref="EndlessLevelManager" /> events.
        /// </summary>
        protected void OnDestroy()
        {
            SafelyUnsubscribe();
            if (EndlessGameUI.instanceExists)
                EndlessGameUI.instance.Unpause();
        }
        // <summary>
        /// Ensure that <see cref="EndlessLevelManager" /> events are unsubscribed from when necessary
        /// </summary>
        protected void SafelyUnsubscribe()
        {
            LazyLoad();
            levelManager.LevelCompleted -= Victory;
        }
        /// <summary>
        /// Ensure <see cref="EndlessLevelManager" /> is not null
        /// </summary>
        protected void LazyLoad()
        {
            if (levelManager == null && EndlessLevelManager.instanceExists)
                levelManager = EndlessLevelManager.instance;
        }
    }
}
Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs.meta
copy from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta copy to Assets/Scripts/TowerDefense/UI/EndlessSettlement.cs.meta
File was copied from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 77846cbd0fd353546b25fc2e0d6ad952
guid: f2125c50d4929b84fa889da0a3054cc7
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs
New file
@@ -0,0 +1,42 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/**
 * 无尽模式切换速度脚本
 * @Author: chenxin
 * @Date: 2020-10-19 16:34:56
 */
namespace KTGMGemClient
{
    public class EndlessSwitchSpeed : MonoBehaviour
    {
        /// <summary>
        /// 当前的倍速
        /// </summary>
        /// <value></value>
        public int Speed { get; private set; } = 1;
        public Image Icon;
        public List<Sprite> SpriteList;
        private void Start()
        {
            Icon.sprite = SpriteList[Speed - 1];
        }
        public void OnClick()
        {
            SwitchSpeed();
        }
        private void SwitchSpeed()
        {
            Speed = Speed == 1 ? 2 : 1;
            Time.timeScale = Speed;
            Icon.sprite = SpriteList[Speed - 1];
        }
    }
}
Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs.meta
copy from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta copy to Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs.meta
File was copied from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 77846cbd0fd353546b25fc2e0d6ad952
guid: be99b683351459b4f8806223396a05a8
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
@@ -19,9 +19,9 @@
    public TextMeshProUGUI timeStatic = null;
    /// <summary>
    /// 选择buff界面
    /// 结算界面
    /// </summary>
    public GameObject SelectBuffUI;
    public GameObject SettlementUI;
    /// <summary>
    /// 倒计时整体的背景图片Mask
@@ -42,6 +42,8 @@
    protected bool[] bVibrate;
    private bool isPause;
    // Start is called before the first frame update
    void Start()
    {
@@ -53,8 +55,9 @@
        if (timeStatic)
            timeStatic.gameObject.SetActive(false);
        SelectBuffUI.SetActive(false);
        EndlessBuffSelect.instance.HideBuffUI();
        EndlessBossHPManager.instance.HideHP();
        SettlementUI.SetActive(false);
    }
    /// <summary>
@@ -98,24 +101,38 @@
        }
    }
    public void Pause()
    {
        isPause = true;
    }
    public void Restart()
    {
        isPause = false;
    }
    public bool IsGameRunning { get { return !isPause; } }
    // Update is called once per frame
    void Update()
    {
        if (isPause) return;
        if (bGameStart)
        {
            startTime += Time.deltaTime;
            timeTextNew.text = ConvertTime((float)Math.Ceiling(startTime));
        }
        if ((!bFirstLoaded) && (!bGameStart))
        if (!bFirstLoaded && !bGameStart)
        {
            bFirstLoaded = true;
            secToDo = 4;
        }
        if (bFirstLoaded && (!bGameStart))
        if (bFirstLoaded && !bGameStart)
        {
            secToDo -= (Time.deltaTime * 1.0f); // 放慢时间用于调试
            secToDo -= Time.deltaTime;
            if (secToDo >= 3)
            {
@@ -159,12 +176,10 @@
            {
                uiStartMssk.gameObject.SetActive(false);
                countDownTextNew.text = "";
                bGameStart = true;
                // 开始关卡
                EndlessLevelManager.instance.StartLevel();
                timeTextNew.gameObject.SetActive(true);
                bGameStart = true;
                // 开始播放背景音乐.
                if (bgMusic != null)
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -4,6 +4,7 @@
using DG.Tweening;
using JetBrains.Annotations;
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using TowerDefense.Level;
@@ -201,6 +202,8 @@
        // 测试屏幕显示相关的倒计时.
        protected bool bLoaded = false;
        private Timer overTimer;
        /// <summary>
        /// 总兵线数
        /// </summary>
@@ -228,6 +231,8 @@
        /// 所有攻击塔位的摧毁信息,是否被摧毁,默认全部没有被摧毁
        /// </summary>
        private bool[,] TowerDestroyArr;
        public event Action GameOverEvent;
        public IPlacementArea selfTowerPlaceArea
        {
@@ -421,12 +426,9 @@
                    break;
                case State.Paused:
                case State.GameOver:
                    // if (oldState == State.Building)
                    // {
                    //     CancelGhostPlacement();
                    // }
                    // Time.timeScale = 0f;
                    Debug.Log("--------------------- game over !!! ---------------------");
                    if (oldState == State.Building)
                        CancelGhostPlacement();
                    Time.timeScale = 1f;
                    break;
                default:
                    throw new ArgumentOutOfRangeException("newState", newState, null);
@@ -681,7 +683,7 @@
                }
                TowerDestroyArr[xidx, i] = true;
                Tower tower = FindTowerWithGridIdx(xidx, i);
                Tower tower = FindTowerWithGridIdx(xidx, 3 - i);
                if (tower)
                {
@@ -730,7 +732,15 @@
                // 红心减少逻辑
                // HealthHeartState.instance.killHeart(false);
                GameOver();
                overTimer = new Timer(1f, SafelyCallGameOverEvent);
            }
        }
        private void SafelyCallGameOverEvent()
        {
            if (GameOverEvent != null)
                GameOverEvent();
            overTimer = null;
        }
        /// <summary>
@@ -1471,7 +1481,7 @@
            int cost = TowerPrice.instance.currentTowerPrice;
            if (zeroCost)
                cost = 0;
            if (forceCost != -1)
                cost = forceCost;
@@ -1499,7 +1509,7 @@
                PlaceTower(lvl);
            }
            return true;
        }
@@ -2001,6 +2011,9 @@
        /// </summary>
        private void Update()
        {
            if (overTimer != null)
                overTimer.Tick(Time.deltaTime);
            for (int ti = listTowerTimer.Count - 1; ti >= 0; ti--)
            {
                // 如果执行到,会在DelTower函数内删除对应的listTowerTimer.
Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs
File was deleted
Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs
New file
@@ -0,0 +1,96 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
/**
 * 无尽模式选择buff
 * @Author: chenxin
 * @Date: 2020-10-15 17:00:26
 */
namespace KTGMGemClient
{
    public class SelectBuffIcon : MonoBehaviour
    {
        public Image Icon;
        public Image BgMask;
        public Image Check;
        public Text Name;
        public Text Effect;
        public event Action<int> OnSelectBuffCompleted;
        /// <summary>
        /// 选择的索引
        /// </summary>
        public int Index;
        private void Start()
        {
            SetState(EndlessBuffSelectState.Normal);
        }
        /// <summary>
        /// 设置选中状态
        /// </summary>
        /// <param name="state"></param>
        public void SetState(EndlessBuffSelectState state)
        {
            switch (state)
            {
                case EndlessBuffSelectState.Normal:
                    Check.gameObject.SetActive(false);
                    BgMask.gameObject.SetActive(false);
                    break;
                case EndlessBuffSelectState.Unselected:
                    Check.gameObject.SetActive(false);
                    BgMask.gameObject.SetActive(true);
                    break;
                case EndlessBuffSelectState.Selected:
                    Check.gameObject.SetActive(true);
                    BgMask.gameObject.SetActive(false);
                    break;
            }
        }
        public void OnClick()
        {
            if (OnSelectBuffCompleted != null)
                OnSelectBuffCompleted(Index);
        }
        public void SetIcon(Sprite param)
        {
            Icon.sprite = param;
        }
        public void SetName(string buffName)
        {
            Name.text = buffName;
        }
        /// <summary>
        /// 设置buff效果描述
        /// </summary>
        /// <param name="effect"></param>
        public void SetEffect(string effect)
        {
            Effect.text = effect;
        }
        /// <summary>
        /// 设置品级
        /// </summary>
        /// <param name="rare"></param>
        public void SetRare(int rare)
        {
            Name.color = EndlessBuffData.GetColorByRare(rare);
        }
    }
}
Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs.meta
copy from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta copy to Assets/Scripts/TowerDefense/UI/HUD/SelectBuffIcon.cs.meta
File was copied from Assets/Scripts/TowerDefense/UI/HUD/SelectBuff.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 77846cbd0fd353546b25fc2e0d6ad952
guid: 9a92c216c3d4e97459299f45fc451060
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Assets/StreamingAssets/Table/donateshop.json
New file
@@ -0,0 +1 @@
[[1,"红龙",["gem:104:1"],3000,3],[2,"知识古树",["gem:111:1"],1800,5],[3,"捐赠宝箱",["box:4:1"],4800,5],[4,"金币",["gold:1000"],1000,10]]
Assets/StreamingAssets/Table/donateshop.json.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: fe1d19575852abc4ca5aabab33eef87c
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/StreamingAssets/Table/endless_buff.json
@@ -1 +1 @@
[[1,"name_1",[1,0],[1,5,0],-1,"增加全体精灵5%攻击力",0,10],[2,"name_2",[1,0],[1,10,100],5,"5波内增加全体精灵10%攻击力",11,20],[3,"name_3",[2,1],[2,200,0],0,"增加200金币",0,10],[4,"name_4",[2,2],[2,500,0],0,"增加500金币",11,20],[5,"name_5",[3101],[3,3,200],0,"随机获得1个3级精灵",0,10],[6,"name_6",[3102],[3,4,500],0,"随机获得1个4级精灵",11,20]]
[[1,"精灵之力",[1,0],[1,5,0],-1,"增加全体精灵5%攻击力",0,10,10001,1],[2,"能量爆发",[1,0],[1,10,100],5,"5波内增加全体精灵10%攻击力",11,20,10002,2],[3,"天降宝财",[2,1],[2,200,0],0,"增加200金币",0,10,10003,1],[4,"金币闪闪",[2,2],[2,500,0],0,"增加500金币",11,20,10004,2],[5,"精灵魔盒(中级)",[3101],[3,3,200],0,"随机获得1个3级精灵",0,10,10005,2],[6,"精灵魔盒(高级)",[3102],[3,4,500],0,"随机获得1个4级精灵",11,20,10006,3]]
Assets/StreamingAssets/Table/endless_enemy.json
@@ -1 +1 @@
[[1,"测试小怪1",1,1,3,1,101],[2,"测试小怪2",1,2,2.8,1,102],[3,"测试小怪3",1,3,2.6,1,103],[4,"测试小怪4",1,4,2.4,1,104],[5,"测试小怪5",2,5,2.2,1,105],[6,"测试小怪6",2,6,2,1,106]]
[[1,"测试小怪1",1,1,3,1,101],[2,"测试小怪2",1,15,1,3,102],[3,"测试小怪3",1,3,1.5,1,103],[4,"测试小怪4",1,4,2,1,104],[5,"测试小怪5",2,5,2,1,105],[6,"测试小怪6",2,6,2,1,106]]
Assets/StreamingAssets/Table/endless_port.json
@@ -1 +1 @@
[[1,1,1,1,1,1,10,5000,200,1.5,2,1000,"gold:5",500],[2,1,1,1,2,2,10,5000,200,1.5,2,1000,"gold:5",500],[3,1,1,1,3,3,10,5000,200,1.5,2,1000,"gold:5",500],[4,1,1,1,4,4,10,5000,200,1.5,2,1000,"gold:5",500],[5,1,1,1,5,5,10,5000,200,1.5,2,1000,"gold:5",500],[6,1,1,2,1,1,10,5000,200,1.5,2,1000,"gold:5",500],[7,1,1,2,2,2,10,5000,200,1.5,2,1000,"gold:5",500],[8,1,1,2,3,3,10,5000,200,1.5,2,1000,"gold:5",500],[9,1,1,2,4,4,10,5000,200,1.5,2,1000,"gold:5",500],[10,1,1,2,5,5,10,5000,200,1.5,2,1000,"gold:5",500],[11,1,1,3,1,-2,1,5000,200,1.5,2,1000,"gold:5",500],[12,1,1,3,2,-2,1,5000,200,1.5,2,1000,"gold:5",500],[13,1,1,3,3,-2,1,5000,200,1.5,2,1000,"gold:5",500],[14,1,1,3,4,-2,1,5000,200,1.5,2,1000,"gold:5",500],[15,1,1,3,5,-2,1,5000,200,1.5,2,1000,"gold:5",500],[16,2,2,1,1,1,10,4000,200,1.5,2,1000,"gold:5",500],[17,2,2,1,2,2,10,4000,200,1.5,2,1000,"gold:5",500],[18,2,2,1,3,3,10,4000,200,1.5,2,1000,"gold:5",500],[19,2,2,1,4,4,10,4000,200,1.5,2,1000,"gold:5",500],[20,2,2,1,5,5,10,4000,200,1.5,2,1000,"gold:5",500],[21,2,2,2,1,1,10,4000,200,1.5,2,1000,"gold:5",500],[22,2,2,2,2,2,10,4000,200,1.5,2,1000,"gold:5",500],[23,2,2,2,3,3,10,4000,200,1.5,2,1000,"gold:5",500],[24,2,2,2,4,4,10,4000,200,1.5,2,1000,"gold:5",500],[25,2,2,2,5,5,10,4000,200,1.5,2,1000,"gold:5",500],[26,2,2,3,1,-2,1,4000,200,1.5,2,1000,"gold:5",500],[27,2,2,3,2,-2,1,4000,200,1.5,2,1000,"gold:5",500],[28,2,2,3,3,-2,1,4000,200,1.5,2,1000,"gold:5",500],[29,2,2,3,4,-2,1,4000,200,1.5,2,1000,"gold:5",500],[30,2,2,3,5,-2,1,4000,200,1.5,2,1000,"gold:5",500],[31,3,3,1,1,1,20,3000,200,1.5,2,1000,"gold:5",500],[32,3,3,1,2,2,20,3000,200,1.5,2,1000,"gold:5",500],[33,3,3,1,3,3,20,3000,200,1.5,2,1000,"gold:5",500],[34,3,3,1,4,4,20,3000,200,1.5,2,1000,"gold:5",500],[35,3,3,1,5,5,20,3000,200,1.5,2,1000,"gold:5",500],[36,3,3,2,1,1,20,3000,200,1.5,2,1000,"gold:5",500],[37,3,3,2,2,2,20,3000,200,1.5,2,1000,"gold:5",500],[38,3,3,2,3,3,20,3000,200,1.5,2,1000,"gold:5",500],[39,3,3,2,4,4,20,3000,200,1.5,2,1000,"gold:5",500],[40,3,3,2,5,5,20,3000,200,1.5,2,1000,"gold:5",500],[41,3,3,3,1,-2,1,3000,200,1.5,2,1000,"gold:5",500],[42,3,3,3,2,-2,1,3000,200,1.5,2,1000,"gold:5",500],[43,3,3,3,3,-2,1,3000,200,1.5,2,1000,"gold:5",500],[44,3,3,3,4,-2,1,3000,200,1.5,2,1000,"gold:5",500],[45,3,3,3,5,-2,1,3000,200,1.5,2,1000,"box:3:1",500]]
[[1,1,1,1,1,0,0,0,200,1.5,2,3000,["gold:5"],[500,9500]],[2,1,1,1,2,0,0,0,200,1.5,2,3000,["gold:5"],[500,9500]],[3,1,1,1,3,1,12,1500,200,1.5,2,3000,["gold:5"],[500,9500]],[4,1,1,1,4,0,0,0,200,1.5,2,3000,["gold:5"],[500,9500]],[5,1,1,1,5,0,0,0,200,1.5,2,3000,["gold:5"],[500,9500]],[6,1,1,2,1,0,0,0,350,1.5,2,3000,["gold:5"],[500,9500]],[7,1,1,2,2,0,0,0,350,1.5,2,3000,["gold:5"],[500,9500]],[8,1,1,2,3,3,6,3000,350,1.5,2,3000,["gold:5"],[500,9500]],[9,1,1,2,4,0,0,0,350,1.5,2,3000,["gold:5"],[500,9500]],[10,1,1,2,5,0,0,0,350,1.5,2,3000,["gold:5"],[500,9500]],[11,1,1,3,1,0,0,0,500,1.5,2,3000,["gold:5"],[500,9500]],[12,1,1,3,2,0,0,0,500,1.5,2,3000,["gold:5"],[500,9500]],[13,1,1,3,3,2,4,4500,500,1.5,2,3000,["gold:5"],[500,9500]],[14,1,1,3,4,0,0,0,500,1.5,2,3000,["gold:5"],[500,9500]],[15,1,1,3,5,0,0,0,500,1.5,2,3000,["gold:5"],[500,9500]],[16,2,2,1,1,0,0,0,1000,1.5,4,3000,["gold:5"],[500,9500]],[17,2,2,1,2,3,6,3000,1000,1.5,4,3000,["gold:5"],[500,9500]],[18,2,2,1,3,1,12,1500,1000,1.5,4,3000,["gold:5"],[500,9500]],[19,2,2,1,4,3,6,3000,1000,1.5,4,3000,["gold:5"],[500,9500]],[20,2,2,1,5,0,0,0,1000,1.5,4,3000,["gold:5"],[500,9500]],[21,2,2,2,1,2,4,4500,1200,1.5,4,3000,["gold:5"],[500,9500]],[22,2,2,2,2,0,0,0,1200,1.5,4,3000,["gold:5"],[500,9500]],[23,2,2,2,3,3,6,3000,1200,1.5,4,3000,["gold:5"],[500,9500]],[24,2,2,2,4,0,0,0,1200,1.5,4,3000,["gold:5"],[500,9500]],[25,2,2,2,5,2,4,4500,1200,1.5,4,3000,["gold:5"],[500,9500]],[26,2,2,3,1,2,4,4500,1400,1.5,4,3000,["gold:5"],[500,9500]],[27,2,2,3,2,3,6,3000,1400,1.5,4,3000,["gold:5"],[500,9500]],[28,2,2,3,3,1,12,1500,1400,1.5,4,3000,["gold:5"],[500,9500]],[29,2,2,3,4,3,6,3000,1400,1.5,4,3000,["gold:5"],[500,9500]],[30,2,2,3,5,2,4,4500,1400,1.5,4,3000,["gold:5"],[500,9500]],[31,3,3,1,1,3,6,3000,1800,1.5,8,3000,["gold:5"],[500,9500]],[32,3,3,1,2,1,12,1500,1800,1.5,8,3000,["gold:5"],[500,9500]],[33,3,3,1,3,2,4,4500,1800,1.5,8,3000,["gold:5"],[500,9500]],[34,3,3,1,4,1,12,1500,1800,1.5,8,3000,["gold:5"],[500,9500]],[35,3,3,1,5,3,6,3000,1800,1.5,8,3000,["gold:5"],[500,9500]],[36,3,3,2,1,1,12,1500,2100,1.5,8,3000,["gold:5"],[500,9500]],[37,3,3,2,2,3,6,3000,2100,1.5,8,3000,["gold:5"],[500,9500]],[38,3,3,2,3,2,4,4500,2100,1.5,8,3000,["gold:5"],[500,9500]],[39,3,3,2,4,3,6,3000,2100,1.5,8,3000,["gold:5"],[500,9500]],[40,3,3,2,5,1,12,1500,2100,1.5,8,3000,["gold:5"],[500,9500]],[41,3,3,3,1,2,4,4500,2400,1.5,8,3000,["gold:5"],[500,9500]],[42,3,3,3,2,2,4,4500,2400,1.5,8,3000,["gold:5"],[500,9500]],[43,3,3,3,3,2,4,4500,2400,1.5,8,3000,["gold:5"],[500,9500]],[44,3,3,3,4,2,4,4500,2400,1.5,8,3000,["gold:5"],[500,9500]],[45,3,3,3,5,2,4,4500,2400,1.5,8,3000,["box:3:1"],[500,9500]],[46,4,3,1,1,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[47,4,3,1,2,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[48,4,3,1,3,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[49,4,3,1,4,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[50,4,3,1,5,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[51,4,3,2,1,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[52,4,3,2,2,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[53,4,3,2,3,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[54,4,3,2,4,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[55,4,3,2,5,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[56,4,3,3,1,2,6,3000,3300,1.5,16,3000,["gold:5"],[500,9500]],[57,4,3,3,2,2,6,3000,3300,1.5,16,3000,["gold:5"],[500,9500]],[58,4,3,3,3,1,12,1500,3300,1.5,16,3000,["gold:5"],[500,9500]],[59,4,3,3,4,2,6,3000,3300,1.5,16,3000,["gold:5"],[500,9500]],[60,4,3,3,5,2,6,3000,3300,1.5,16,3000,["box:3:1"],[500,9500]],[61,5,3,1,1,2,8,4500,3600,2,32,3000,["gold:5"],[500,9500]],[62,5,3,1,2,3,12,3000,3600,2,32,3000,["gold:5"],[500,9500]],[63,5,3,1,3,1,24,1500,3600,2,32,3000,["gold:5"],[500,9500]],[64,5,3,1,4,3,12,3000,3600,2,32,3000,["gold:5"],[500,9500]],[65,5,3,1,5,2,8,4500,3600,2,32,3000,["gold:5"],[500,9500]],[66,5,3,2,1,3,12,3000,3900,2,32,3000,["gold:5"],[500,9500]],[67,5,3,2,2,1,24,1500,3900,2,32,3000,["gold:5"],[500,9500]],[68,5,3,2,3,2,8,4500,3900,2,32,3000,["gold:5"],[500,9500]],[69,5,3,2,4,1,24,1500,3900,2,32,3000,["gold:5"],[500,9500]],[70,5,3,2,5,3,12,3000,3900,2,32,3000,["gold:5"],[500,9500]],[71,5,3,3,1,1,24,1500,4200,2,32,3000,["gold:5"],[500,9500]],[72,5,3,3,2,3,12,3000,4200,2,32,3000,["gold:5"],[500,9500]],[73,5,3,3,3,2,8,4500,4200,2,32,3000,["gold:5"],[500,9500]],[74,5,3,3,4,3,12,3000,4200,2,32,3000,["gold:5"],[500,9500]],[75,5,3,3,5,1,24,1500,4200,2,32,3000,["gold:5"],[500,9500]],[76,5,3,4,1,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[77,5,3,4,2,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[78,5,3,4,3,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[79,5,3,4,4,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[80,5,3,4,5,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[81,5,3,5,1,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[82,5,3,5,2,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[83,5,3,5,3,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[84,5,3,5,4,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[85,5,3,5,5,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[86,5,3,6,1,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[87,5,3,6,2,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[88,5,3,6,3,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[89,5,3,6,4,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[90,5,3,6,5,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[91,5,3,7,1,2,12,3000,5400,2,64,3000,["gold:5"],[500,9500]],[92,5,3,7,2,2,12,3000,5400,2,64,3000,["gold:5"],[500,9500]],[93,5,3,7,3,1,24,1500,5400,2,64,3000,["gold:5"],[500,9500]],[94,5,3,7,4,2,12,3000,5400,2,64,3000,["gold:5"],[500,9500]],[95,5,3,7,5,2,12,3000,5400,2,64,3000,["gold:5"],[500,9500]],[96,5,3,8,1,2,8,4500,5700,2,64,3000,["gold:5"],[500,9500]],[97,5,3,8,2,3,12,3000,5700,2,64,3000,["gold:5"],[500,9500]],[98,5,3,8,3,1,24,1500,5700,2,64,3000,["gold:5"],[500,9500]],[99,5,3,8,4,3,12,3000,5700,2,64,3000,["gold:5"],[500,9500]],[100,5,3,8,5,2,8,4500,5700,2,64,3000,["gold:5"],[500,9500]],[101,5,3,9,1,3,12,3000,6000,2,64,3000,["gold:5"],[500,9500]],[102,5,3,9,2,1,24,1500,6000,2,64,3000,["gold:5"],[500,9500]],[103,5,3,9,3,2,8,4500,6000,2,64,3000,["gold:5"],[500,9500]],[104,5,3,9,4,1,24,1500,6000,2,64,3000,["gold:5"],[500,9500]],[105,5,3,9,5,3,12,3000,6000,2,64,3000,["gold:5"],[500,9500]],[106,5,3,10,1,1,24,1500,6300,2,64,3000,["gold:5"],[500,9500]],[107,5,3,10,2,3,12,3000,6300,2,64,3000,["gold:5"],[500,9500]],[108,5,3,10,3,2,8,4500,6300,2,64,3000,["gold:5"],[500,9500]],[109,5,3,10,4,3,12,3000,6300,2,64,3000,["gold:5"],[500,9500]],[110,5,3,10,5,1,24,1500,6300,2,64,3000,["gold:5"],[500,9500]],[111,5,3,11,1,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[112,5,3,11,2,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[113,5,3,11,3,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[114,5,3,11,4,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[115,5,3,11,5,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[116,5,3,12,1,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]],[117,5,3,12,2,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]],[118,5,3,12,3,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]],[119,5,3,12,4,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]],[120,5,3,12,5,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]]]
Assets/StreamingAssets/Table/notice.json
New file
@@ -0,0 +1 @@
[[1,"玩家{0}加入了工会","工会"]]
Assets/StreamingAssets/Table/notice.json.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: cc9d5f40f9a8a204dbfcab51726b9429
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/StreamingAssets/Table/scoreshop.json
New file
@@ -0,0 +1 @@
[[1,"1级金币获取增加","18小时内对战结算金币量+10%",64800,1,1.1,10000,5000,2],[2,"2级金币获取增加","18小时内对战结算金币量+15%",64800,1,1.5,15000,5000,2],[3,"通行证经验增加","18小时每次对战可获得100点通行证经验",64800,2,100,8000,2000,2]]
Assets/StreamingAssets/Table/scoreshop.json.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8dfa253d7a836b84aa81d692efa65f09
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
GemBattle/宝石塔防_Data/Managed/Assembly-CSharp-firstpass.dll
Binary files differ
GemBattle/宝石塔防_Data/Managed/Assembly-CSharp.dll
Binary files differ
GemBattle/宝石塔防_Data/Managed/MoreMountains.NiceVibrations.Demos.dll
Binary files differ
GemBattle/宝石塔防_Data/Managed/MoreMountains.NiceVibrations.Haptics.dll
Binary files differ
GemBattle/宝石塔防_Data/Managed/MoreMountains.NiceVibrations.dll
Binary files differ
GemBattle/宝石塔防_Data/Managed/Unity.TextMeshPro.dll
Binary files differ
GemBattle/宝石塔防_Data/Managed/Unity.Timeline.dll
Binary files differ
GemBattle/宝石塔防_Data/Managed/UnityEngine.UI.dll
Binary files differ
GemBattle/宝石塔防_Data/StreamingAssets/Table/donateshop.json
New file
@@ -0,0 +1 @@
[[1,"红龙",["gem:104:1"],3000,3],[2,"知识古树",["gem:111:1"],1800,5],[3,"捐赠宝箱",["box:4:1"],4800,5],[4,"金币",["gold:1000"],1000,10]]
GemBattle/宝石塔防_Data/StreamingAssets/Table/endless_buff.json
@@ -1 +1 @@
[[1,"name_1",[1,0],[1,5,0],-1,"增加全体精灵5%攻击力",0,10],[2,"name_2",[1,0],[1,10,100],5,"5波内增加全体精灵10%攻击力",11,20],[3,"name_3",[2,1],[2,200,0],0,"增加200金币",0,10],[4,"name_4",[2,2],[2,500,0],0,"增加500金币",11,20],[5,"name_5",[3101],[3,3,200],0,"随机获得1个3级精灵",0,10],[6,"name_6",[3102],[3,4,500],0,"随机获得1个4级精灵",11,20]]
[[1,"精灵之力",[1,0],[1,5,0],-1,"增加全体精灵5%攻击力",0,10,10001,1],[2,"能量爆发",[1,0],[1,10,100],5,"5波内增加全体精灵10%攻击力",11,20,10002,2],[3,"天降宝财",[2,1],[2,200,0],0,"增加200金币",0,10,10003,1],[4,"金币闪闪",[2,2],[2,500,0],0,"增加500金币",11,20,10004,2],[5,"精灵魔盒(中级)",[3101],[3,3,200],0,"随机获得1个3级精灵",0,10,10005,2],[6,"精灵魔盒(高级)",[3102],[3,4,500],0,"随机获得1个4级精灵",11,20,10006,3]]
GemBattle/宝石塔防_Data/StreamingAssets/Table/endless_enemy.json
@@ -1 +1 @@
[[1,"测试小怪1",1,1,3,1,101],[2,"测试小怪2",1,2,2.8,1,102],[3,"测试小怪3",1,3,2.6,1,103],[4,"测试小怪4",1,4,2.4,1,104],[5,"测试小怪5",2,5,2.2,1,105],[6,"测试小怪6",2,6,2,1,106]]
[[1,"测试小怪1",1,1,3,1,101],[2,"测试小怪2",1,15,1,3,102],[3,"测试小怪3",1,3,1.5,1,103],[4,"测试小怪4",1,4,2,1,104],[5,"测试小怪5",2,5,2,1,105],[6,"测试小怪6",2,6,2,1,106]]
GemBattle/宝石塔防_Data/StreamingAssets/Table/endless_port.json
@@ -1 +1 @@
[[1,1,1,1,1,1,10,5000,200,1.5,2,1000,"gold:5",500],[2,1,1,1,2,2,10,5000,200,1.5,2,1000,"gold:5",500],[3,1,1,1,3,3,10,5000,200,1.5,2,1000,"gold:5",500],[4,1,1,1,4,4,10,5000,200,1.5,2,1000,"gold:5",500],[5,1,1,1,5,5,10,5000,200,1.5,2,1000,"gold:5",500],[6,1,1,2,1,1,10,5000,200,1.5,2,1000,"gold:5",500],[7,1,1,2,2,2,10,5000,200,1.5,2,1000,"gold:5",500],[8,1,1,2,3,3,10,5000,200,1.5,2,1000,"gold:5",500],[9,1,1,2,4,4,10,5000,200,1.5,2,1000,"gold:5",500],[10,1,1,2,5,5,10,5000,200,1.5,2,1000,"gold:5",500],[11,1,1,3,1,-2,1,5000,200,1.5,2,1000,"gold:5",500],[12,1,1,3,2,-2,1,5000,200,1.5,2,1000,"gold:5",500],[13,1,1,3,3,-2,1,5000,200,1.5,2,1000,"gold:5",500],[14,1,1,3,4,-2,1,5000,200,1.5,2,1000,"gold:5",500],[15,1,1,3,5,-2,1,5000,200,1.5,2,1000,"gold:5",500],[16,2,2,1,1,1,10,4000,200,1.5,2,1000,"gold:5",500],[17,2,2,1,2,2,10,4000,200,1.5,2,1000,"gold:5",500],[18,2,2,1,3,3,10,4000,200,1.5,2,1000,"gold:5",500],[19,2,2,1,4,4,10,4000,200,1.5,2,1000,"gold:5",500],[20,2,2,1,5,5,10,4000,200,1.5,2,1000,"gold:5",500],[21,2,2,2,1,1,10,4000,200,1.5,2,1000,"gold:5",500],[22,2,2,2,2,2,10,4000,200,1.5,2,1000,"gold:5",500],[23,2,2,2,3,3,10,4000,200,1.5,2,1000,"gold:5",500],[24,2,2,2,4,4,10,4000,200,1.5,2,1000,"gold:5",500],[25,2,2,2,5,5,10,4000,200,1.5,2,1000,"gold:5",500],[26,2,2,3,1,-2,1,4000,200,1.5,2,1000,"gold:5",500],[27,2,2,3,2,-2,1,4000,200,1.5,2,1000,"gold:5",500],[28,2,2,3,3,-2,1,4000,200,1.5,2,1000,"gold:5",500],[29,2,2,3,4,-2,1,4000,200,1.5,2,1000,"gold:5",500],[30,2,2,3,5,-2,1,4000,200,1.5,2,1000,"gold:5",500],[31,3,3,1,1,1,20,3000,200,1.5,2,1000,"gold:5",500],[32,3,3,1,2,2,20,3000,200,1.5,2,1000,"gold:5",500],[33,3,3,1,3,3,20,3000,200,1.5,2,1000,"gold:5",500],[34,3,3,1,4,4,20,3000,200,1.5,2,1000,"gold:5",500],[35,3,3,1,5,5,20,3000,200,1.5,2,1000,"gold:5",500],[36,3,3,2,1,1,20,3000,200,1.5,2,1000,"gold:5",500],[37,3,3,2,2,2,20,3000,200,1.5,2,1000,"gold:5",500],[38,3,3,2,3,3,20,3000,200,1.5,2,1000,"gold:5",500],[39,3,3,2,4,4,20,3000,200,1.5,2,1000,"gold:5",500],[40,3,3,2,5,5,20,3000,200,1.5,2,1000,"gold:5",500],[41,3,3,3,1,-2,1,3000,200,1.5,2,1000,"gold:5",500],[42,3,3,3,2,-2,1,3000,200,1.5,2,1000,"gold:5",500],[43,3,3,3,3,-2,1,3000,200,1.5,2,1000,"gold:5",500],[44,3,3,3,4,-2,1,3000,200,1.5,2,1000,"gold:5",500],[45,3,3,3,5,-2,1,3000,200,1.5,2,1000,"box:3:1",500]]
[[1,1,1,1,1,0,0,0,200,1.5,2,3000,["gold:5"],[500,9500]],[2,1,1,1,2,0,0,0,200,1.5,2,3000,["gold:5"],[500,9500]],[3,1,1,1,3,1,12,1500,200,1.5,2,3000,["gold:5"],[500,9500]],[4,1,1,1,4,0,0,0,200,1.5,2,3000,["gold:5"],[500,9500]],[5,1,1,1,5,0,0,0,200,1.5,2,3000,["gold:5"],[500,9500]],[6,1,1,2,1,0,0,0,350,1.5,2,3000,["gold:5"],[500,9500]],[7,1,1,2,2,0,0,0,350,1.5,2,3000,["gold:5"],[500,9500]],[8,1,1,2,3,3,6,3000,350,1.5,2,3000,["gold:5"],[500,9500]],[9,1,1,2,4,0,0,0,350,1.5,2,3000,["gold:5"],[500,9500]],[10,1,1,2,5,0,0,0,350,1.5,2,3000,["gold:5"],[500,9500]],[11,1,1,3,1,0,0,0,500,1.5,2,3000,["gold:5"],[500,9500]],[12,1,1,3,2,0,0,0,500,1.5,2,3000,["gold:5"],[500,9500]],[13,1,1,3,3,2,4,4500,500,1.5,2,3000,["gold:5"],[500,9500]],[14,1,1,3,4,0,0,0,500,1.5,2,3000,["gold:5"],[500,9500]],[15,1,1,3,5,0,0,0,500,1.5,2,3000,["gold:5"],[500,9500]],[16,2,2,1,1,0,0,0,1000,1.5,4,3000,["gold:5"],[500,9500]],[17,2,2,1,2,3,6,3000,1000,1.5,4,3000,["gold:5"],[500,9500]],[18,2,2,1,3,1,12,1500,1000,1.5,4,3000,["gold:5"],[500,9500]],[19,2,2,1,4,3,6,3000,1000,1.5,4,3000,["gold:5"],[500,9500]],[20,2,2,1,5,0,0,0,1000,1.5,4,3000,["gold:5"],[500,9500]],[21,2,2,2,1,2,4,4500,1200,1.5,4,3000,["gold:5"],[500,9500]],[22,2,2,2,2,0,0,0,1200,1.5,4,3000,["gold:5"],[500,9500]],[23,2,2,2,3,3,6,3000,1200,1.5,4,3000,["gold:5"],[500,9500]],[24,2,2,2,4,0,0,0,1200,1.5,4,3000,["gold:5"],[500,9500]],[25,2,2,2,5,2,4,4500,1200,1.5,4,3000,["gold:5"],[500,9500]],[26,2,2,3,1,2,4,4500,1400,1.5,4,3000,["gold:5"],[500,9500]],[27,2,2,3,2,3,6,3000,1400,1.5,4,3000,["gold:5"],[500,9500]],[28,2,2,3,3,1,12,1500,1400,1.5,4,3000,["gold:5"],[500,9500]],[29,2,2,3,4,3,6,3000,1400,1.5,4,3000,["gold:5"],[500,9500]],[30,2,2,3,5,2,4,4500,1400,1.5,4,3000,["gold:5"],[500,9500]],[31,3,3,1,1,3,6,3000,1800,1.5,8,3000,["gold:5"],[500,9500]],[32,3,3,1,2,1,12,1500,1800,1.5,8,3000,["gold:5"],[500,9500]],[33,3,3,1,3,2,4,4500,1800,1.5,8,3000,["gold:5"],[500,9500]],[34,3,3,1,4,1,12,1500,1800,1.5,8,3000,["gold:5"],[500,9500]],[35,3,3,1,5,3,6,3000,1800,1.5,8,3000,["gold:5"],[500,9500]],[36,3,3,2,1,1,12,1500,2100,1.5,8,3000,["gold:5"],[500,9500]],[37,3,3,2,2,3,6,3000,2100,1.5,8,3000,["gold:5"],[500,9500]],[38,3,3,2,3,2,4,4500,2100,1.5,8,3000,["gold:5"],[500,9500]],[39,3,3,2,4,3,6,3000,2100,1.5,8,3000,["gold:5"],[500,9500]],[40,3,3,2,5,1,12,1500,2100,1.5,8,3000,["gold:5"],[500,9500]],[41,3,3,3,1,2,4,4500,2400,1.5,8,3000,["gold:5"],[500,9500]],[42,3,3,3,2,2,4,4500,2400,1.5,8,3000,["gold:5"],[500,9500]],[43,3,3,3,3,2,4,4500,2400,1.5,8,3000,["gold:5"],[500,9500]],[44,3,3,3,4,2,4,4500,2400,1.5,8,3000,["gold:5"],[500,9500]],[45,3,3,3,5,2,4,4500,2400,1.5,8,3000,["box:3:1"],[500,9500]],[46,4,3,1,1,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[47,4,3,1,2,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[48,4,3,1,3,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[49,4,3,1,4,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[50,4,3,1,5,1,12,1500,2700,1.5,16,3000,["gold:5"],[500,9500]],[51,4,3,2,1,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[52,4,3,2,2,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[53,4,3,2,3,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[54,4,3,2,4,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[55,4,3,2,5,3,6,3000,3000,1.5,16,3000,["gold:5"],[500,9500]],[56,4,3,3,1,2,6,3000,3300,1.5,16,3000,["gold:5"],[500,9500]],[57,4,3,3,2,2,6,3000,3300,1.5,16,3000,["gold:5"],[500,9500]],[58,4,3,3,3,1,12,1500,3300,1.5,16,3000,["gold:5"],[500,9500]],[59,4,3,3,4,2,6,3000,3300,1.5,16,3000,["gold:5"],[500,9500]],[60,4,3,3,5,2,6,3000,3300,1.5,16,3000,["box:3:1"],[500,9500]],[61,5,3,1,1,2,8,4500,3600,2,32,3000,["gold:5"],[500,9500]],[62,5,3,1,2,3,12,3000,3600,2,32,3000,["gold:5"],[500,9500]],[63,5,3,1,3,1,24,1500,3600,2,32,3000,["gold:5"],[500,9500]],[64,5,3,1,4,3,12,3000,3600,2,32,3000,["gold:5"],[500,9500]],[65,5,3,1,5,2,8,4500,3600,2,32,3000,["gold:5"],[500,9500]],[66,5,3,2,1,3,12,3000,3900,2,32,3000,["gold:5"],[500,9500]],[67,5,3,2,2,1,24,1500,3900,2,32,3000,["gold:5"],[500,9500]],[68,5,3,2,3,2,8,4500,3900,2,32,3000,["gold:5"],[500,9500]],[69,5,3,2,4,1,24,1500,3900,2,32,3000,["gold:5"],[500,9500]],[70,5,3,2,5,3,12,3000,3900,2,32,3000,["gold:5"],[500,9500]],[71,5,3,3,1,1,24,1500,4200,2,32,3000,["gold:5"],[500,9500]],[72,5,3,3,2,3,12,3000,4200,2,32,3000,["gold:5"],[500,9500]],[73,5,3,3,3,2,8,4500,4200,2,32,3000,["gold:5"],[500,9500]],[74,5,3,3,4,3,12,3000,4200,2,32,3000,["gold:5"],[500,9500]],[75,5,3,3,5,1,24,1500,4200,2,32,3000,["gold:5"],[500,9500]],[76,5,3,4,1,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[77,5,3,4,2,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[78,5,3,4,3,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[79,5,3,4,4,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[80,5,3,4,5,2,8,4500,4500,2,64,3000,["gold:5"],[500,9500]],[81,5,3,5,1,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[82,5,3,5,2,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[83,5,3,5,3,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[84,5,3,5,4,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[85,5,3,5,5,1,24,1500,4800,2,64,3000,["gold:5"],[500,9500]],[86,5,3,6,1,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[87,5,3,6,2,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[88,5,3,6,3,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[89,5,3,6,4,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[90,5,3,6,5,3,12,3000,5100,2,64,3000,["gold:5"],[500,9500]],[91,5,3,7,1,2,12,3000,5400,2,64,3000,["gold:5"],[500,9500]],[92,5,3,7,2,2,12,3000,5400,2,64,3000,["gold:5"],[500,9500]],[93,5,3,7,3,1,24,1500,5400,2,64,3000,["gold:5"],[500,9500]],[94,5,3,7,4,2,12,3000,5400,2,64,3000,["gold:5"],[500,9500]],[95,5,3,7,5,2,12,3000,5400,2,64,3000,["gold:5"],[500,9500]],[96,5,3,8,1,2,8,4500,5700,2,64,3000,["gold:5"],[500,9500]],[97,5,3,8,2,3,12,3000,5700,2,64,3000,["gold:5"],[500,9500]],[98,5,3,8,3,1,24,1500,5700,2,64,3000,["gold:5"],[500,9500]],[99,5,3,8,4,3,12,3000,5700,2,64,3000,["gold:5"],[500,9500]],[100,5,3,8,5,2,8,4500,5700,2,64,3000,["gold:5"],[500,9500]],[101,5,3,9,1,3,12,3000,6000,2,64,3000,["gold:5"],[500,9500]],[102,5,3,9,2,1,24,1500,6000,2,64,3000,["gold:5"],[500,9500]],[103,5,3,9,3,2,8,4500,6000,2,64,3000,["gold:5"],[500,9500]],[104,5,3,9,4,1,24,1500,6000,2,64,3000,["gold:5"],[500,9500]],[105,5,3,9,5,3,12,3000,6000,2,64,3000,["gold:5"],[500,9500]],[106,5,3,10,1,1,24,1500,6300,2,64,3000,["gold:5"],[500,9500]],[107,5,3,10,2,3,12,3000,6300,2,64,3000,["gold:5"],[500,9500]],[108,5,3,10,3,2,8,4500,6300,2,64,3000,["gold:5"],[500,9500]],[109,5,3,10,4,3,12,3000,6300,2,64,3000,["gold:5"],[500,9500]],[110,5,3,10,5,1,24,1500,6300,2,64,3000,["gold:5"],[500,9500]],[111,5,3,11,1,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[112,5,3,11,2,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[113,5,3,11,3,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[114,5,3,11,4,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[115,5,3,11,5,2,8,4500,6600,2,64,3000,["gold:5"],[500,9500]],[116,5,3,12,1,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]],[117,5,3,12,2,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]],[118,5,3,12,3,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]],[119,5,3,12,4,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]],[120,5,3,12,5,1,24,1500,6900,2,64,3000,["gold:5"],[500,9500]]]
GemBattle/宝石塔防_Data/StreamingAssets/Table/notice.json
New file
@@ -0,0 +1 @@
[[1,"玩家{0}加入了工会","工会"]]
GemBattle/宝石塔防_Data/StreamingAssets/Table/scoreshop.json
New file
@@ -0,0 +1 @@
[[1,"1级金币获取增加","18小时内对战结算金币量+10%",64800,1,1.1,10000,5000,2],[2,"2级金币获取增加","18小时内对战结算金币量+15%",64800,1,1.5,15000,5000,2],[3,"通行证经验增加","18小时每次对战可获得100点通行证经验",64800,2,100,8000,2000,2]]
GemBattle/宝石塔防_Data/globalgamemanagers
Binary files differ
GemBattle/宝石塔防_Data/globalgamemanagers.assets
Binary files differ
GemBattle/宝石塔防_Data/level0
Binary files differ
GemBattle/宝石塔防_Data/level1
Binary files differ
GemBattle/宝石塔防_Data/level2
Binary files differ
GemBattle/宝石塔防_Data/level3
Binary files differ
GemBattle/宝石塔防_Data/resources.assets
Binary files differ
GemBattle/宝石塔防_Data/sharedassets0.assets
Binary files differ
GemBattle/宝石塔防_Data/sharedassets1.assets
Binary files differ
GemBattle/宝石塔防_Data/sharedassets2.assets
Binary files differ
GemBattle/宝石塔防_Data/sharedassets2.assets.resS
Binary files differ
GemBattle/宝石塔防_Data/sharedassets3.assets
Binary files differ
GemBattle/宝石塔防_Data/sharedassets3.assets.resS
Binary files differ