浏览代码

Character-select screen basic functionality

/fix-mtt-493
eheimburg 4 年前
当前提交
2b8c0818
共有 47 个文件被更改,包括 4696 次插入271 次删除
  1. 514
      Assets/BossRoom/Prefabs/Character/CharacterSet.prefab
  2. 992
      Assets/BossRoom/Scenes/CharSelect.unity
  3. 27
      Assets/BossRoom/Scripts/Client/ClientCharacterVisualization.cs
  4. 83
      Assets/BossRoom/Scripts/Client/Game/State/ClientCharSelectState.cs
  5. 5
      Assets/BossRoom/Scripts/Server/Game/Character/ServerCharacter.cs
  6. 179
      Assets/BossRoom/Scripts/Server/Game/State/ServerCharSelectState.cs
  7. 168
      Assets/BossRoom/Scripts/Shared/Game/State/CharSelectData.cs
  8. 10
      Assets/BossRoom/Scripts/Shared/NetworkCharacterState.cs
  9. 17
      Assets/BossRoom/Scripts/Shared/SliceBehaviors/EmptySliceBehavior.cs
  10. 64
      Assets/BossRoom/Prefabs/Character/CharacterSet for CharSelect (Variant).prefab
  11. 7
      Assets/BossRoom/Prefabs/Character/CharacterSet for CharSelect (Variant).prefab.meta
  12. 8
      Assets/BossRoom/Prefabs/UI.meta
  13. 76
      Assets/BossRoom/Scripts/Client/Game/Character/ModelAppearanceSetter.cs
  14. 11
      Assets/BossRoom/Scripts/Client/Game/Character/ModelAppearanceSetter.cs.meta
  15. 228
      Assets/BossRoom/Scripts/Client/UI/UICharSelectController.cs
  16. 11
      Assets/BossRoom/Scripts/Client/UI/UICharSelectController.cs.meta
  17. 118
      Assets/BossRoom/Scripts/Client/UI/UICharSelectPlayerStateBox.cs
  18. 11
      Assets/BossRoom/Scripts/Client/UI/UICharSelectPlayerStateBox.cs.meta
  19. 19
      Assets/BossRoom/Scripts/Client/UI/UICharSelectPlayerStateBoxSettings.cs
  20. 11
      Assets/BossRoom/Scripts/Client/UI/UICharSelectPlayerStateBoxSettings.cs.meta
  21. 56
      Assets/BossRoom/Scripts/Server/Game/LobbyResults.cs
  22. 11
      Assets/BossRoom/Scripts/Server/Game/LobbyResults.cs.meta
  23. 24
      Assets/BossRoom/Scripts/Shared/Game/CharacterTypeEnum.cs
  24. 11
      Assets/BossRoom/Scripts/Shared/Game/CharacterTypeEnum.cs.meta
  25. 8
      Assets/BossRoom/Textures/UI/CharSelect.meta
  26. 1001
      Assets/BossRoom/Prefabs/UI/PlayerStateBoxTemplate.prefab
  27. 7
      Assets/BossRoom/Prefabs/UI/PlayerStateBoxTemplate.prefab.meta
  28. 64
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Archer.png
  29. 120
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Archer.png.meta
  30. 25
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Caster.png
  31. 120
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Caster.png.meta
  32. 27
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Rogue.png
  33. 120
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Rogue.png.meta
  34. 24
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Tank.png
  35. 120
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Tank.png.meta
  36. 8
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_NotSelected.png
  37. 120
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_NotSelected.png.meta
  38. 20
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Archer.png
  39. 120
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Archer.png.meta
  40. 14
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Caster.png
  41. 120
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Caster.png.meta
  42. 14
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Rogue.png
  43. 120
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Rogue.png.meta
  44. 14
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Tank.png
  45. 120
      Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Tank.png.meta

514
Assets/BossRoom/Prefabs/Character/CharacterSet.prefab


- component: {fileID: 4547385851608601811}
- component: {fileID: 4199396739699390757}
- component: {fileID: 7943089997373843793}
- component: {fileID: 2962535016233727189}
m_Layer: 9
m_Name: CharacterSet
m_TagString: Untagged

m_Name:
m_EditorClassIdentifier:
m_ClientVisualsAnimator: {fileID: 4199396739699390757}
m_ModelSetter: {fileID: 2962535016233727189}
--- !u!114 &2962535016233727189
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3736552308919084700}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: aa17b16346702814286158f2a1378d10, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &3741846901656975085
GameObject:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ac6c83cdac4b1c740951b39df73768fa, type: 3}
--- !u!1 &6384206623454602747 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6630845041802794700, guid: ac6c83cdac4b1c740951b39df73768fa, type: 3}
m_PrefabInstance: {fileID: 332206951480292151}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 332206951480292151}
m_PrefabAsset: {fileID: 0}
--- !u!1 &6384206623454602747 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6630845041802794700, guid: ac6c83cdac4b1c740951b39df73768fa, type: 3}
m_PrefabInstance: {fileID: 332206951480292151}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &454819820488923400

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 10b351404ac8a7f46bf58430e1cc8eef, type: 3}
--- !u!1 &1421799770502368504 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1995826771073365337, guid: 10b351404ac8a7f46bf58430e1cc8eef, type: 3}
m_PrefabInstance: {fileID: 579177113187023265}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1421799770502368504 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1995826771073365337, guid: 10b351404ac8a7f46bf58430e1cc8eef, type: 3}
m_PrefabInstance: {fileID: 579177113187023265}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &728892584412951697
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ed24796831d4621449bac9de9c857e31, type: 3}
--- !u!1 &4547385850944476164 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3820746449368866965, guid: ed24796831d4621449bac9de9c857e31, type: 3}
m_PrefabInstance: {fileID: 728892584412951697}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 728892584412951697}
m_PrefabAsset: {fileID: 0}
--- !u!1 &4547385850944476164 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3820746449368866965, guid: ed24796831d4621449bac9de9c857e31, type: 3}
m_PrefabInstance: {fileID: 728892584412951697}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &733550275437513568

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1b7e977ff0655ae4cbdd17929b152e15, type: 3}
--- !u!1 &6193635572633873786 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6883714035873258232, guid: 1b7e977ff0655ae4cbdd17929b152e15, type: 3}
m_PrefabInstance: {fileID: 753204829954258818}
m_PrefabAsset: {fileID: 0}
--- !u!1 &6193635572633873786 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6883714035873258232, guid: 1b7e977ff0655ae4cbdd17929b152e15, type: 3}
m_PrefabInstance: {fileID: 753204829954258818}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &852324916834964655
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 38e0524ac233b6c40afb38c90691c4fa, type: 3}
--- !u!4 &2580354841388530375 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2892914521110621208, guid: 38e0524ac233b6c40afb38c90691c4fa, type: 3}
m_PrefabInstance: {fileID: 858764088337110751}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 858764088337110751}
m_PrefabAsset: {fileID: 0}
--- !u!4 &2580354841388530375 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2892914521110621208, guid: 38e0524ac233b6c40afb38c90691c4fa, type: 3}
m_PrefabInstance: {fileID: 858764088337110751}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &860493482025792141

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: b97a7eee3b3ee204d84d439863d57625, type: 3}
--- !u!1 &5485558108050409640 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 5175067299823254053, guid: b97a7eee3b3ee204d84d439863d57625, type: 3}
m_PrefabInstance: {fileID: 860493482025792141}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 860493482025792141}
m_PrefabAsset: {fileID: 0}
--- !u!1 &5485558108050409640 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 5175067299823254053, guid: b97a7eee3b3ee204d84d439863d57625, type: 3}
m_PrefabInstance: {fileID: 860493482025792141}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &946742905020422199

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: bdccc0f84e2d51440b93b29a121c0c7b, type: 3}
--- !u!1 &7080003993000648899 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 8026183889984403700, guid: bdccc0f84e2d51440b93b29a121c0c7b, type: 3}
m_PrefabInstance: {fileID: 946742905020422199}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 946742905020422199}
m_PrefabAsset: {fileID: 0}
--- !u!1 &7080003993000648899 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 8026183889984403700, guid: bdccc0f84e2d51440b93b29a121c0c7b, type: 3}
m_PrefabInstance: {fileID: 946742905020422199}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &959375327167680774

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5d12ce98a47b50d4c8a8200298776161, type: 3}
--- !u!4 &7505134407724153699 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8800453722438721035, guid: 5d12ce98a47b50d4c8a8200298776161, type: 3}
m_PrefabInstance: {fileID: 1298982770278458728}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 1298982770278458728}
m_PrefabAsset: {fileID: 0}
--- !u!4 &7505134407724153699 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8800453722438721035, guid: 5d12ce98a47b50d4c8a8200298776161, type: 3}
m_PrefabInstance: {fileID: 1298982770278458728}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1338131622577927935

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: b8030b4fc426af24bbe0f7beb34946c3, type: 3}
--- !u!4 &3596195561666825011 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2556284620966837708, guid: b8030b4fc426af24bbe0f7beb34946c3, type: 3}
m_PrefabInstance: {fileID: 1338131622577927935}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 1338131622577927935}
m_PrefabAsset: {fileID: 0}
--- !u!4 &3596195561666825011 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2556284620966837708, guid: b8030b4fc426af24bbe0f7beb34946c3, type: 3}
m_PrefabInstance: {fileID: 1338131622577927935}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1373061141570302353

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f3f30ec22ae42a24baf6c8a0c0391c95, type: 3}
--- !u!4 &2150341864517573137 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 599364752401762136, guid: f3f30ec22ae42a24baf6c8a0c0391c95, type: 3}
m_PrefabInstance: {fileID: 1551159777671028041}
m_PrefabAsset: {fileID: 0}
--- !u!4 &2150341864517573137 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 599364752401762136, guid: f3f30ec22ae42a24baf6c8a0c0391c95, type: 3}
m_PrefabInstance: {fileID: 1551159777671028041}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1559570637484814041
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 536c048095afdf94eb5fe2d76b1eddac, type: 3}
--- !u!4 &5385782326741960938 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6852949516830729779, guid: 536c048095afdf94eb5fe2d76b1eddac, type: 3}
m_PrefabInstance: {fileID: 1559570637484814041}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 1559570637484814041}
m_PrefabAsset: {fileID: 0}
--- !u!4 &5385782326741960938 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6852949516830729779, guid: 536c048095afdf94eb5fe2d76b1eddac, type: 3}
m_PrefabInstance: {fileID: 1559570637484814041}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1635758741189274712

objectReference: {fileID: 1385890853458294598}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d607de369828e294f84db65de7e31daf, type: 3}
--- !u!4 &3874973950823841917 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2555174517495098405, guid: d607de369828e294f84db65de7e31daf, type: 3}
m_PrefabInstance: {fileID: 1635758741189274712}
m_PrefabAsset: {fileID: 0}
--- !u!4 &3874973950823841917 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2555174517495098405, guid: d607de369828e294f84db65de7e31daf, type: 3}
m_PrefabInstance: {fileID: 1635758741189274712}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1748790218336742982
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d07948daabd313d449f0f4c99aef7a1e, type: 3}
--- !u!4 &3336581218452436569 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3838288550262042125, guid: d07948daabd313d449f0f4c99aef7a1e, type: 3}
m_PrefabInstance: {fileID: 1948297122739230804}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 1948297122739230804}
m_PrefabAsset: {fileID: 0}
--- !u!4 &3336581218452436569 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3838288550262042125, guid: d07948daabd313d449f0f4c99aef7a1e, type: 3}
m_PrefabInstance: {fileID: 1948297122739230804}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1977156738873174314

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 87d3fa966871a354ab69c7694d7df857, type: 3}
--- !u!4 &2332494599897491548 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4585477292987236726, guid: 87d3fa966871a354ab69c7694d7df857, type: 3}
m_PrefabInstance: {fileID: 2304800906626459946}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 2304800906626459946}
m_PrefabAsset: {fileID: 0}
--- !u!4 &2332494599897491548 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4585477292987236726, guid: 87d3fa966871a354ab69c7694d7df857, type: 3}
m_PrefabInstance: {fileID: 2304800906626459946}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2332375452339634652

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d953efb8e63e08a4e9a8569fd8b5897a, type: 3}
--- !u!4 &4547385851833940655 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2253431811545332595, guid: d953efb8e63e08a4e9a8569fd8b5897a, type: 3}
m_PrefabInstance: {fileID: 2332375452339634652}
m_PrefabAsset: {fileID: 0}
--- !u!4 &4547385851833940655 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2253431811545332595, guid: d953efb8e63e08a4e9a8569fd8b5897a, type: 3}
m_PrefabInstance: {fileID: 2332375452339634652}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2497891176746094250
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f2614cfe7ec25e04daab46ef6fe016db, type: 3}
--- !u!4 &6681215039063494845 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 9084388714526285335, guid: f2614cfe7ec25e04daab46ef6fe016db, type: 3}
m_PrefabInstance: {fileID: 2497891176746094250}
m_PrefabAsset: {fileID: 0}
--- !u!4 &6681215039063494845 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 9084388714526285335, guid: f2614cfe7ec25e04daab46ef6fe016db, type: 3}
m_PrefabInstance: {fileID: 2497891176746094250}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2551460648612136281
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9595d49816059ba4180a551ca688e4af, type: 3}
--- !u!1 &3197879114731797047 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1083606013360258926, guid: 9595d49816059ba4180a551ca688e4af, type: 3}
m_PrefabInstance: {fileID: 2551460648612136281}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 2551460648612136281}
m_PrefabAsset: {fileID: 0}
--- !u!1 &3197879114731797047 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1083606013360258926, guid: 9595d49816059ba4180a551ca688e4af, type: 3}
m_PrefabInstance: {fileID: 2551460648612136281}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2552637127853507512

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f5529f8d35a95534f8758203ddd51329, type: 3}
--- !u!1 &3056500194282619590 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 650232806790545790, guid: f5529f8d35a95534f8758203ddd51329, type: 3}
m_PrefabInstance: {fileID: 2552637127853507512}
m_PrefabAsset: {fileID: 0}
--- !u!1 &3056500194282619590 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 650232806790545790, guid: f5529f8d35a95534f8758203ddd51329, type: 3}
m_PrefabInstance: {fileID: 2552637127853507512}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2559759718550300145
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 911190f1bbf61c34294081b77f6680f7, type: 3}
--- !u!4 &4782661555799005955 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7032222739674234600, guid: 911190f1bbf61c34294081b77f6680f7, type: 3}
m_PrefabInstance: {fileID: 2578332822568035819}
m_PrefabAsset: {fileID: 0}
--- !u!4 &4782661555799005955 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7032222739674234600, guid: 911190f1bbf61c34294081b77f6680f7, type: 3}
m_PrefabInstance: {fileID: 2578332822568035819}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2676281989898900403
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 0620affdd221fee4c920d5162afcf52a, type: 3}
--- !u!1 &2664582909841472669 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 201844337772534149, guid: 0620affdd221fee4c920d5162afcf52a, type: 3}
m_PrefabInstance: {fileID: 2753837178931275032}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2664582909841472669 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 201844337772534149, guid: 0620affdd221fee4c920d5162afcf52a, type: 3}
m_PrefabInstance: {fileID: 2753837178931275032}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2772185692000239163
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 8495415076674091646}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e68d12b3ef24a434b9cbca2853581437, type: 3}
--- !u!1 &3309616343003613770 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 414692744000754765, guid: e68d12b3ef24a434b9cbca2853581437, type: 3}
m_PrefabInstance: {fileID: 2895628046655954439}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 2895628046655954439}
m_PrefabAsset: {fileID: 0}
--- !u!1 &3309616343003613770 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 414692744000754765, guid: e68d12b3ef24a434b9cbca2853581437, type: 3}
m_PrefabInstance: {fileID: 2895628046655954439}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &3079460002134734451

objectReference: {fileID: 9197077968316907432}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5381f310736a7ee4299e4357a80bed5e, type: 3}
--- !u!4 &3229698751595907325 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 463379732019691150, guid: 5381f310736a7ee4299e4357a80bed5e, type: 3}
m_PrefabInstance: {fileID: 3079460002134734451}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 3079460002134734451}
m_PrefabAsset: {fileID: 0}
--- !u!4 &3229698751595907325 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 463379732019691150, guid: 5381f310736a7ee4299e4357a80bed5e, type: 3}
m_PrefabInstance: {fileID: 3079460002134734451}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &3133333727875434760

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a1ca400ab2423004b882142da178f6ed, type: 3}
--- !u!1 &8805814283378961913 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6153388255771542989, guid: a1ca400ab2423004b882142da178f6ed, type: 3}
m_PrefabInstance: {fileID: 3409703666122221620}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 3409703666122221620}
m_PrefabAsset: {fileID: 0}
--- !u!1 &8805814283378961913 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6153388255771542989, guid: a1ca400ab2423004b882142da178f6ed, type: 3}
m_PrefabInstance: {fileID: 3409703666122221620}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &3777335569244496007

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 74a7d6d2f76fc6d4797beb48b1cd7646, type: 3}
--- !u!1 &4547385850965649145 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 824235669658650238, guid: 74a7d6d2f76fc6d4797beb48b1cd7646, type: 3}
m_PrefabInstance: {fileID: 3777335569244496007}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 3777335569244496007}
m_PrefabAsset: {fileID: 0}
--- !u!1 &4547385850965649145 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 824235669658650238, guid: 74a7d6d2f76fc6d4797beb48b1cd7646, type: 3}
m_PrefabInstance: {fileID: 3777335569244496007}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &3837232923765061116

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 452b37393fff45a4190db85c07db5091, type: 3}
--- !u!1 &1382085230529991733 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3126280509331847267, guid: 452b37393fff45a4190db85c07db5091, type: 3}
m_PrefabInstance: {fileID: 4056864475129474134}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 4056864475129474134}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1382085230529991733 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3126280509331847267, guid: 452b37393fff45a4190db85c07db5091, type: 3}
m_PrefabInstance: {fileID: 4056864475129474134}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4124759619680181128

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f20e664f7ca7fe34f95a1ff9da56a56e, type: 3}
--- !u!4 &6169262293128850976 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7933657354263531807, guid: f20e664f7ca7fe34f95a1ff9da56a56e, type: 3}
m_PrefabInstance: {fileID: 4289568740189880127}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 4289568740189880127}
m_PrefabAsset: {fileID: 0}
--- !u!4 &6169262293128850976 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7933657354263531807, guid: f20e664f7ca7fe34f95a1ff9da56a56e, type: 3}
m_PrefabInstance: {fileID: 4289568740189880127}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4592565681611793841

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 703f3506e74a649469495ada5e8e464f, type: 3}
--- !u!4 &534770833101321263 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4645868414553896214, guid: 703f3506e74a649469495ada5e8e464f, type: 3}
m_PrefabInstance: {fileID: 5121317938826002745}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 5121317938826002745}
m_PrefabAsset: {fileID: 0}
--- !u!4 &534770833101321263 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4645868414553896214, guid: 703f3506e74a649469495ada5e8e464f, type: 3}
m_PrefabInstance: {fileID: 5121317938826002745}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5171542828428279513

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 262c3bed68fd4cd4992491e302590de6, type: 3}
--- !u!4 &7338646148094174711 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2458148490952219438, guid: 262c3bed68fd4cd4992491e302590de6, type: 3}
m_PrefabInstance: {fileID: 5171542828428279513}
m_PrefabAsset: {fileID: 0}
--- !u!4 &7338646148094174711 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2458148490952219438, guid: 262c3bed68fd4cd4992491e302590de6, type: 3}
m_PrefabInstance: {fileID: 5171542828428279513}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5199179225619728242
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 44230123ba61ad348a74bf921fb43f55, type: 3}
--- !u!1 &3208043950912929606 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7251484847085385780, guid: 44230123ba61ad348a74bf921fb43f55, type: 3}
m_PrefabInstance: {fileID: 5199179225619728242}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 5199179225619728242}
m_PrefabAsset: {fileID: 0}
--- !u!1 &3208043950912929606 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7251484847085385780, guid: 44230123ba61ad348a74bf921fb43f55, type: 3}
m_PrefabInstance: {fileID: 5199179225619728242}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5341351849974814149

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 47674e55d0a657e449bda89ec0284444, type: 3}
--- !u!4 &6034350816615062860 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1845940580957423753, guid: 47674e55d0a657e449bda89ec0284444, type: 3}
m_PrefabInstance: {fileID: 5341351849974814149}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 5341351849974814149}
m_PrefabAsset: {fileID: 0}
--- !u!4 &6034350816615062860 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1845940580957423753, guid: 47674e55d0a657e449bda89ec0284444, type: 3}
m_PrefabInstance: {fileID: 5341351849974814149}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5352777419765239849

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 0d6b4bf1ad026a348b7ca6cd309b4664, type: 3}
--- !u!1 &6699397568312395898 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1362178114493462303, guid: 0d6b4bf1ad026a348b7ca6cd309b4664, type: 3}
m_PrefabInstance: {fileID: 5629050180898783077}
m_PrefabAsset: {fileID: 0}
--- !u!1 &6699397568312395898 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1362178114493462303, guid: 0d6b4bf1ad026a348b7ca6cd309b4664, type: 3}
m_PrefabInstance: {fileID: 5629050180898783077}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5735955324776762991
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 68025b7ccf083b74d874690d0f00dc19, type: 3}
--- !u!1 &3315647717772617126 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 9215068552564892868, guid: 68025b7ccf083b74d874690d0f00dc19, type: 3}
m_PrefabInstance: {fileID: 5900010241816985954}
m_PrefabAsset: {fileID: 0}
--- !u!1 &3315647717772617126 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 9215068552564892868, guid: 68025b7ccf083b74d874690d0f00dc19, type: 3}
m_PrefabInstance: {fileID: 5900010241816985954}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6024978955715288471
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 31e2d218bdea6484aa2444529536bd4f, type: 3}
--- !u!4 &4039519497099478242 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7779303979955980379, guid: 31e2d218bdea6484aa2444529536bd4f, type: 3}
m_PrefabInstance: {fileID: 6051397901256363193}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 6051397901256363193}
m_PrefabAsset: {fileID: 0}
--- !u!4 &4039519497099478242 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7779303979955980379, guid: 31e2d218bdea6484aa2444529536bd4f, type: 3}
m_PrefabInstance: {fileID: 6051397901256363193}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6121439877142640174

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9f5862b9eb9fdda49af566eb54c4c619, type: 3}
--- !u!1 &9050837806502146063 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 2983828450634303009, guid: 9f5862b9eb9fdda49af566eb54c4c619, type: 3}
m_PrefabInstance: {fileID: 6121439877142640174}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 6121439877142640174}
m_PrefabAsset: {fileID: 0}
--- !u!1 &9050837806502146063 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 2983828450634303009, guid: 9f5862b9eb9fdda49af566eb54c4c619, type: 3}
m_PrefabInstance: {fileID: 6121439877142640174}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6222368100819943145

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9b19e335c012acd4991a3b07812d4716, type: 3}
--- !u!1 &6121441642964187457 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 231439608630822926, guid: 9b19e335c012acd4991a3b07812d4716, type: 3}
m_PrefabInstance: {fileID: 6324610393801797967}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 6324610393801797967}
m_PrefabAsset: {fileID: 0}
--- !u!1 &6121441642964187457 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 231439608630822926, guid: 9b19e335c012acd4991a3b07812d4716, type: 3}
m_PrefabInstance: {fileID: 6324610393801797967}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6325765763770940777

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2658078643132ad4e948769858149171, type: 3}
--- !u!4 &8861105547073997969 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2473108818245498025, guid: 2658078643132ad4e948769858149171, type: 3}
m_PrefabInstance: {fileID: 6389138726017988664}
m_PrefabAsset: {fileID: 0}
--- !u!4 &8861105547073997969 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2473108818245498025, guid: 2658078643132ad4e948769858149171, type: 3}
m_PrefabInstance: {fileID: 6389138726017988664}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6420593949926805718
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 702056046fec9a242b2aca3bdcf500bd, type: 3}
--- !u!1 &8534728331211606325 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3417099743748970979, guid: 702056046fec9a242b2aca3bdcf500bd, type: 3}
m_PrefabInstance: {fileID: 6420593949926805718}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 6420593949926805718}
m_PrefabAsset: {fileID: 0}
--- !u!1 &8534728331211606325 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3417099743748970979, guid: 702056046fec9a242b2aca3bdcf500bd, type: 3}
m_PrefabInstance: {fileID: 6420593949926805718}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6505776418882712968

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d46c92b0e8e59fd4588327d16d538b8f, type: 3}
--- !u!1 &7841305284959672188 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3934106151804199668, guid: d46c92b0e8e59fd4588327d16d538b8f, type: 3}
m_PrefabInstance: {fileID: 6505776418882712968}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 6505776418882712968}
m_PrefabAsset: {fileID: 0}
--- !u!1 &7841305284959672188 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3934106151804199668, guid: d46c92b0e8e59fd4588327d16d538b8f, type: 3}
m_PrefabInstance: {fileID: 6505776418882712968}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6564140219370697799

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: de20aa000868a91418174947dcd6fd15, type: 3}
--- !u!1 &7583954262385114442 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3967914386260491426, guid: de20aa000868a91418174947dcd6fd15, type: 3}
m_PrefabInstance: {fileID: 6786716989100507624}
m_PrefabAsset: {fileID: 0}
--- !u!1 &7583954262385114442 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3967914386260491426, guid: de20aa000868a91418174947dcd6fd15, type: 3}
m_PrefabInstance: {fileID: 6786716989100507624}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6839588286196653432
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f0213ce5798f369469a216cc5724766f, type: 3}
--- !u!1 &7705283312386798936 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 684809618467943946, guid: f0213ce5798f369469a216cc5724766f, type: 3}
m_PrefabInstance: {fileID: 7164739790737376082}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 7164739790737376082}
m_PrefabAsset: {fileID: 0}
--- !u!1 &7705283312386798936 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 684809618467943946, guid: f0213ce5798f369469a216cc5724766f, type: 3}
m_PrefabInstance: {fileID: 7164739790737376082}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &7226082320440086571

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 962df0864142a254eaec4d4cb2785aa0, type: 3}
--- !u!4 &8021949320386496443 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 800378435743324048, guid: 962df0864142a254eaec4d4cb2785aa0, type: 3}
m_PrefabInstance: {fileID: 7226082320440086571}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 7226082320440086571}
m_PrefabAsset: {fileID: 0}
--- !u!4 &8021949320386496443 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 800378435743324048, guid: 962df0864142a254eaec4d4cb2785aa0, type: 3}
m_PrefabInstance: {fileID: 7226082320440086571}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &7247765245552551133

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3e983bd9d10c8114b8c111165ff2d489, type: 3}
--- !u!4 &4547385851144630406 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6020426494497837075, guid: 3e983bd9d10c8114b8c111165ff2d489, type: 3}
m_PrefabInstance: {fileID: 7824818163089416341}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 7824818163089416341}
m_PrefabAsset: {fileID: 0}
--- !u!4 &4547385851144630406 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6020426494497837075, guid: 3e983bd9d10c8114b8c111165ff2d489, type: 3}
m_PrefabInstance: {fileID: 7824818163089416341}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &8109979917195724144

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2226a66895e83f14e9e85c0940a35d51, type: 3}
--- !u!1 &6715786524771158821 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3296401311353261653, guid: 2226a66895e83f14e9e85c0940a35d51, type: 3}
m_PrefabInstance: {fileID: 8109979917195724144}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 8109979917195724144}
m_PrefabAsset: {fileID: 0}
--- !u!1 &6715786524771158821 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3296401311353261653, guid: 2226a66895e83f14e9e85c0940a35d51, type: 3}
m_PrefabInstance: {fileID: 8109979917195724144}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &8285655248222059531

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9e4d9d7db79d480478283614b07db589, type: 3}
--- !u!4 &7166287806086859235 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1613455296145824198, guid: 9e4d9d7db79d480478283614b07db589, type: 3}
m_PrefabInstance: {fileID: 8437460648559628325}
m_PrefabAsset: {fileID: 0}
--- !u!4 &7166287806086859235 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1613455296145824198, guid: 9e4d9d7db79d480478283614b07db589, type: 3}
m_PrefabInstance: {fileID: 8437460648559628325}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &8619195299117345507
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 47609086cade114459272378dbd54c84, type: 3}
--- !u!4 &3093908146546913644 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6733529486627085199, guid: 47609086cade114459272378dbd54c84, type: 3}
m_PrefabInstance: {fileID: 8619195299117345507}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 8619195299117345507}
m_PrefabAsset: {fileID: 0}
--- !u!4 &3093908146546913644 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6733529486627085199, guid: 47609086cade114459272378dbd54c84, type: 3}
m_PrefabInstance: {fileID: 8619195299117345507}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &8760278354213475920

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 8f204097121b14e43bd73fc671797fb9, type: 3}
--- !u!4 &2995822706927088220 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5765045536348447756, guid: 8f204097121b14e43bd73fc671797fb9, type: 3}
m_PrefabInstance: {fileID: 8760278354213475920}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 8760278354213475920}
m_PrefabAsset: {fileID: 0}
--- !u!4 &2995822706927088220 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5765045536348447756, guid: 8f204097121b14e43bd73fc671797fb9, type: 3}
m_PrefabInstance: {fileID: 8760278354213475920}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &8872525669382660264

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3ac8975790f363c449a5811b44f2c2dd, type: 3}
--- !u!1 &2767387628863870913 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6721120468174862185, guid: 3ac8975790f363c449a5811b44f2c2dd, type: 3}
m_PrefabInstance: {fileID: 8872525669382660264}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2767387628863870913 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6721120468174862185, guid: 3ac8975790f363c449a5811b44f2c2dd, type: 3}
m_PrefabInstance: {fileID: 8872525669382660264}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &8890895197321617453
PrefabInstance:
m_ObjectHideFlags: 0

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 7d1ba64bc16129d4bb75541d7c49ec05, type: 3}
--- !u!4 &3698569048365922069 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5628721195025659427, guid: 7d1ba64bc16129d4bb75541d7c49ec05, type: 3}
m_PrefabInstance: {fileID: 9029375231347491126}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 9029375231347491126}
m_PrefabAsset: {fileID: 0}
--- !u!4 &3698569048365922069 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5628721195025659427, guid: 7d1ba64bc16129d4bb75541d7c49ec05, type: 3}
m_PrefabInstance: {fileID: 9029375231347491126}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &9036259825240657000

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2ac46e815db5a5a49b0df4a3acc67549, type: 3}
--- !u!1 &1942619982609780376 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7463217729639695088, guid: 2ac46e815db5a5a49b0df4a3acc67549, type: 3}
m_PrefabInstance: {fileID: 9036259825240657000}
m_PrefabAsset: {fileID: 0}
m_PrefabInstance: {fileID: 9036259825240657000}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1942619982609780376 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7463217729639695088, guid: 2ac46e815db5a5a49b0df4a3acc67549, type: 3}
m_PrefabInstance: {fileID: 9036259825240657000}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &9040556202868015762

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4e52a93e5e7209448906906efbaedad1, type: 3}
--- !u!4 &5921472453351408518 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3281773030520282443, guid: 4e52a93e5e7209448906906efbaedad1, type: 3}
m_PrefabInstance: {fileID: 9198172320007184077}
m_PrefabAsset: {fileID: 0}
--- !u!4 &5921472453351408518 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3281773030520282443, guid: 4e52a93e5e7209448906906efbaedad1, type: 3}
m_PrefabInstance: {fileID: 9198172320007184077}
m_PrefabAsset: {fileID: 0}

992
Assets/BossRoom/Scenes/CharSelect.unity
文件差异内容过多而无法显示
查看文件

27
Assets/BossRoom/Scripts/Client/ClientCharacterVisualization.cs


[SerializeField]
private Animator m_ClientVisualsAnimator;
[SerializeField]
private ModelAppearanceSetter m_ModelSetter;
public Animator OurAnimator { get { return m_ClientVisualsAnimator; } }
private ActionVisualization m_ActionViz;

Parent.GetComponent<BossRoom.Client.ClientCharacter>().ChildVizObject = this;
transform.parent = null;
// listen for char-select info to change (in practice, this info doesn't
// change, but we may not have the values set yet) ...
m_NetState.CharacterClass.OnValueChanged += OnCharacterClassChanged;
m_NetState.IsMale.OnValueChanged += OnIsMaleChanged;
// ...and visualize the current char-select values that we know about
ApplyCharacterClassAndGender();
if (IsLocalPlayer)
{

break;
default:
throw new ArgumentOutOfRangeException(nameof(newValue), newValue, null);
}
}
private void OnCharacterClassChanged(CharacterTypeEnum oldValue, CharacterTypeEnum newValue)
{
ApplyCharacterClassAndGender();
}
private void OnIsMaleChanged(bool oldValue, bool newValue)
{
ApplyCharacterClassAndGender();
}
private void ApplyCharacterClassAndGender()
{
if (m_ModelSetter)
{
m_ModelSetter.SetModel(m_NetState.CharacterClass.Value, m_NetState.IsMale.Value);
}
}

83
Assets/BossRoom/Scripts/Client/Game/State/ClientCharSelectState.cs


using System.Collections.Generic;
using UnityEngine;
using BossRoom;
using MLAPI;
namespace BossRoom.Client
{

[RequireComponent(typeof(CharSelectData))]
public class ClientCharSelectState : GameStateBehaviour
{
/// <summary>
/// Reference to the scene's state object so that UI can access state
/// </summary>
public static ClientCharSelectState Instance;
public CharSelectData CharSelectData { get; private set; }
public int CharIndex { get; private set; }
private void Awake()
{
Instance = this;
CharSelectData = GetComponent<CharSelectData>();
}
private void OnDestroy()
{
CharSelectData.OnAssignedLobbyIndex -= OnAssignedCharIndex;
if (Instance == this)
Instance = null;
}
public override void NetworkStart()
{
base.NetworkStart();
if (!IsClient)
{
this.enabled = false;
}
else
{
CharSelectData.OnAssignedLobbyIndex += OnAssignedCharIndex;
}
}
public void ChangeSlot(CharacterTypeEnum newClass, bool newIsMale, CharSelectData.SlotState newState)
{
CharSelectData.InvokeServerRpc(CharSelectData.RpcChangeSlot,
NetworkingManager.Singleton.LocalClientId,
newClass, newIsMale, newState);
}
/*
if (!IsClient) { this.enabled = false; }
if (!IsClient)
{
this.enabled = false;
}
else
{
// Work around another MLAPI timing bug. (Similar to other reported timing bug, but is *probably* not the same?)
// Because this component is attached to an in-scene NetworkedObject and not a dynamically-created one,
// our NetworkStart() is called before the server has finished initializing the server-side version of us.
// (We are fully initialized here on the client, but not the server.) If we try to call RPC functions too
// quickly, the server will get a null-reference-exception in MLAPI.NetworkedBehaviour.InvokeServerRPCLocal()
// or MLAPI.NetworkedBehaviour.OnRemoteServerRPC (depending on whether we're in host mode or a separate
// client, respectively).
//
// (This is also why the server can't just use its OnClientConnected() to immediately assign us a lobby slot:
// sending client RPCs immediately after learning about a client is too soon, and always fails.)
//
// There doesn't seem to be any way to be notified of when we are REALLY ready to send/receive RPCs.
// In testing, waiting a single physics frame seems to be sufficient... but since its a problem on the SERVER
// and we're delaying in the client, there is no reason to believe a single frame will always be enough time.
//
// To repro this bug, simply comment out the line indicated in CoroRequestLobbyIndex() and then host a game.
StartCoroutine(CoroRequestLobbyIndex());
}
}
private IEnumerator CoroRequestLobbyIndex()
{
// COMMENT OUT THE NEXT LINE TO REPRO BUG
yield return new WaitForFixedUpdate();
NetData.InvokeServerRpc(NetData.RpcRequestLobbyIndex, NetworkingManager.Singleton.LocalClientId);
yield break;
}
*/
private void OnAssignedCharIndex(int index)
{
Debug.Log("We've been assigned index #" + index);
CharIndex = index;
}
}
}

5
Assets/BossRoom/Scripts/Server/Game/Character/ServerCharacter.cs


NetState.DoActionEventServer += OnActionPlayRequest;
NetState.OnReceivedClientInput += OnClientMoveRequest;
NetState.NetworkLifeState.OnValueChanged += OnLifeStateChanged;
// store our character-creation choices in NetworkedVars so clients can figure out how to visualize us
var lobbyChoices = LobbyResults.GetInstance().GetCharSelectChoiceForClient(OwnerClientId);
NetState.CharacterClass.Value = lobbyChoices.Class;
NetState.IsMale.Value = lobbyChoices.IsMale;
}
}

179
Assets/BossRoom/Scripts/Server/Game/State/ServerCharSelectState.cs


using System.Collections.Generic;
using UnityEngine;
using BossRoom;
using MLAPI;
using MLAPI.SceneManagement;
namespace BossRoom.Server
{

public class ServerCharSelectState : GameStateBehaviour
{
public override GameState ActiveState { get { return GameState.CHARSELECT; } }
public CharSelectData CharSelectData { get; private set; }
private List<ulong> m_CharSlotClientIDs;
private void Awake()
{
CharSelectData = GetComponent<CharSelectData>();
CharSelectData.OnClientChangedSlot += OnClientChangedSlot;
m_CharSlotClientIDs = new List<ulong>();
}
//TODO: GOMPS-83. Remove this temp variable and replace with core CharSelect logic.
private float m_start_s; //TEMP. manages transition.
private void OnClientChangedSlot(ulong clientId, CharacterTypeEnum newClass, bool newIsMale, CharSelectData.SlotState newState)
{
if (CharSelectData.IsLobbyLocked())
{
// The user tried to change their class after everything was locked in... too late! Discard this choice
return;
}
int idx = FindClientIdx(clientId);
if (idx == -1)
throw new System.Exception("OnClientChangedSlot: unknown client ID " + clientId);
CharSelectData.SetCharSelectSlot(idx, new CharSelectData.CharSelectSlot(newClass, newIsMale, newState));
if (newState == CharSelectData.SlotState.LOCKEDIN)
{
// it's possible that this is the last person we were waiting for. See if we're fully locked in!
LockLobbyIfReady();
}
}
/// <summary>
/// Looks through all our connections and sees if everyone has locked in their choice;
/// if so, we lock in the whole lobby, save state, and begin the transition to gameplay
/// </summary>
private void LockLobbyIfReady()
{
for (int x = 0; x < m_CharSlotClientIDs.Count; ++x)
{
if (MLAPI.NetworkingManager.Singleton.ConnectedClients.ContainsKey(m_CharSlotClientIDs[ x ]) &&
CharSelectData.GetCharSelectSlot(x).State != CharSelectData.SlotState.LOCKEDIN)
{
return; // this is a real player, and they are not ready to start, so we're done
}
}
// everybody's ready at the same time! Lock it down!
CharSelectData.SetLobbyLocked();
// remember our choices so the next scene can use the info
for (int x = 0; x < m_CharSlotClientIDs.Count; ++x)
{
if (MLAPI.NetworkingManager.Singleton.ConnectedClients.ContainsKey(m_CharSlotClientIDs[ x ]))
{
var charSelectChoices = CharSelectData.GetCharSelectSlot(x);
LobbyResults.GetInstance().SetCharSelectChoiceForClient(m_CharSlotClientIDs[ x ],
new LobbyResults.CharSelectChoice(charSelectChoices.Class, charSelectChoices.IsMale));
}
}
// Switch scenes after a short delay
StartCoroutine(CoroEndLobby());
}
private IEnumerator CoroEndLobby()
{
yield return new WaitForSeconds(3);
MLAPI.SceneManagement.NetworkSceneManager.SwitchScene("DungeonTest");
}
private void OnDestroy()
{
if (NetworkingManager.Singleton)
{
NetworkingManager.Singleton.OnClientConnectedCallback -= OnClientConnected;
NetworkingManager.Singleton.OnClientDisconnectCallback -= OnClientDisconnectCallback;
}
CharSelectData.OnClientChangedSlot -= OnClientChangedSlot;
}
private int FindClientIdx(ulong clientId)
{
for (int x = 0; x < m_CharSlotClientIDs.Count; ++x)
{
if (m_CharSlotClientIDs[ x ] == clientId)
return x;
}
return -1;
}
if (!IsServer) { this.enabled = false; }
if (!IsServer)
{
this.enabled = false;
}
else
{
NetworkingManager.Singleton.OnClientConnectedCallback += OnClientConnected;
NetworkingManager.Singleton.OnClientDisconnectCallback += OnClientDisconnectCallback;
if (IsHost)
{
// host doesn't get an OnClientConnected()
OnClientConnected(OwnerClientId);
}
}
}
m_start_s = Time.time;
private void OnClientConnected(ulong clientId)
{
// FIXME: here we work around another MLAPI bug when starting up scenes with in-scene networked objects.
// We'd like to immediately give the new client a slot in our lobby, but if we try to send an RPC to the
// client-side version of this scene NetworkedObject, it will fail. The client's log will show
// "[MLAPI] ClientRPC message received for a non-existent object with id: 1. This message is lost."
// If we wait a moment, the object will be assigned its ID (of 1) and everything will work. But there's no
// notification to reliably tell us when the server and client are truly initialized.
//
// Add'l notes: I tried to work around this by having the newly-connected client send an "I'm ready" RPC to the
// server, assuming that by the time the server received an RPC, it would be safe to respond. But the client
// literally cannot send RPCs yet! If it sends one too quickly after connecting, the server gets a null-reference
// exception. (Exception is in either MLAPI.NetworkedBehaviour.InvokeServerRPCLocal() or
// MLAPI.NetworkedBehaviour.OnRemoteServerRPC, depending on whether we're in host mode or a standalone
// client, respectively). This actually seems like a separate bug, but probably tied into the same problem.
// To repro the bug, comment out this line...
StartCoroutine(CoroWorkAroundMlapiBug(clientId));
// ... and uncomment this one:
//AssignNewLobbyIndex(clientId);
// Update is called once per frame
void Update()
private IEnumerator CoroWorkAroundMlapiBug(ulong clientId)
{
var client = NetworkingManager.Singleton.ConnectedClients[ clientId ];
// for the host-mode client, a single frame of delay seems to be enough;
// for networked connections, it often takes longer, so we wait a second.
if (IsHost && clientId == NetworkingManager.Singleton.LocalClientId)
yield return new WaitForFixedUpdate();
else
yield return new WaitForSeconds(1);
AssignNewLobbyIndex(clientId);
}
private void AssignNewLobbyIndex(ulong clientId)
if( (Time.time - m_start_s) > 3 )
int newClientIdx = -1;
// see if any of the existing slots are for a client ID that's dead.
// Note that we may find this new clientId is already in our list, if
// "reuse client IDs" is enabled... and it is! This means that somebody
// else was in the lobby, but then quit, and a new client got their ID.
for (int x = 0; x < m_CharSlotClientIDs.Count; ++x)
//temp: we don't have any logic or anything in CharSelect, so for now we just skip on to the next scene.
MLAPI.SceneManagement.NetworkSceneManager.SwitchScene("DungeonTest");
if (m_CharSlotClientIDs[ x ] == clientId ||
!MLAPI.NetworkingManager.Singleton.ConnectedClients.ContainsKey(m_CharSlotClientIDs[x]))
{
// it's a dead slot; reuse it!
m_CharSlotClientIDs[ x ] = clientId;
newClientIdx = x;
break;
}
if (newClientIdx == -1)
{
// all existing slots are in use; get a new one
newClientIdx = m_CharSlotClientIDs.Count;
m_CharSlotClientIDs.Add(clientId);
}
CharSelectData.InvokeClientRpcOnClient(CharSelectData.RpcAssignLobbyIndex, clientId, newClientIdx, "MLAPI_INTERNAL");
}
private void OnClientDisconnectCallback(ulong clientId)
{
// find this player's old slot and set their visuals to inactive, so other players know they're gone.
int idx = FindClientIdx(clientId);
if (idx != -1)
{
CharSelectData.SetCharSelectSlot(idx, new CharSelectData.CharSelectSlot(CharacterTypeEnum.TANK, true, CharSelectData.SlotState.INACTIVE));
}
}
}

168
Assets/BossRoom/Scripts/Shared/Game/State/CharSelectData.cs


using System.Collections.Generic;
using UnityEngine;
using MLAPI;
using System;
using MLAPI.Messaging;
namespace BossRoom
{

public class CharSelectData : NetworkedBehaviour
{
//TODO: GOMPS-83. implement the true synced array for CharacterSlots. There should be 8, and some can be null.
//They can probably just be strings for now.
private MLAPI.NetworkedVar.Collections.NetworkedList<string> CharSlots;
#region public interface
[Serializable]
public enum SlotState
{
INACTIVE,
ACTIVE,
LOCKEDIN,
}
public const int MAX_LOBBY_PLAYERS = 8;
/// <summary>
/// Describes one of the eight lobby slots in the character-select screen.
/// </summary>
[Serializable]
public struct CharSelectSlot
{
public CharacterTypeEnum Class;
public bool IsMale;
public SlotState State;
public CharSelectSlot(CharacterTypeEnum Class, bool IsMale, SlotState State)
{
this.State = State;
this.IsMale = IsMale;
this.Class = Class;
}
public CharSelectSlot(string encoded)
{
string[] parts = encoded.Split(',');
State = (SlotState)Enum.Parse(typeof(SlotState), parts[ 0 ]);
IsMale = parts[ 1 ] == "1";
Class = (CharacterTypeEnum)Enum.Parse(typeof(CharacterTypeEnum), parts[ 2 ]);
}
public string EncodeForMLAPI()
{
return State + "," + (IsMale ? "1" : "0") + "," + Class;
}
}
/// <summary>
/// Retrieves info about one of the slots in the character-select UI
/// </summary>
public CharSelectSlot GetCharSelectSlot(int idx)
{
if (m_CharSlots.Count <= idx)
return new CharSelectSlot(CharacterTypeEnum.TANK, true, SlotState.INACTIVE);
return new CharSelectSlot(m_CharSlots[ idx ]);
}
/// <summary>
/// Set the networked-var info for a character slot. (Only the server can call this!)
/// </summary>
public void SetCharSelectSlot(int idx, CharSelectSlot slot)
{
while (m_CharSlots.Count <= idx)
m_CharSlots.Add(new CharSelectSlot(CharacterTypeEnum.TANK, true, SlotState.INACTIVE).EncodeForMLAPI());
m_CharSlots[ idx ] = slot.EncodeForMLAPI();
}
/// <summary>
/// Notify clients that the lobby is all done and we'll be transitioning to gameplay soon.
/// (Only the server can call this!)
/// </summary>
public void SetLobbyLocked()
{
m_Ready.Value = true;
}
/// <summary>
/// Indicates whether the lobby is closed to further changes.
/// </summary>
public bool IsLobbyLocked()
{
return m_Ready.Value;
}
/// <summary>
/// Client code can register for this notification to be informed of changes to chargen slots
/// </summary>
public event Action<int, CharSelectSlot> OnCharSelectSlotChanged;
/// <summary>
/// Client code can register for this notification to know when all lobby participants are ready.
/// The scene will be switched automatically a few seconds later, so this is just for UI visualization
/// </summary>
public event Action OnLobbyLockedIn;
/// <summary>
/// Client notification when the server has assigned this client a player Index (from 0 to 7);
/// UI uses this tell whether we are "P1", "P2", etc. in the char-select UI
/// </summary>
public event Action<int> OnAssignedLobbyIndex;
/// <summary>
/// Server notification when a new client is available
/// </summary>
public event Action<ulong> OnRequestLobbyIndex;
/// <summary>
/// Server notification when a client changes their char-gen state
/// </summary>
public event Action<ulong, CharacterTypeEnum, bool, SlotState> OnClientChangedSlot;
#endregion
#region Implementation details
// Because MLAPI's NetworkedList cannot serialize arbitrary serializable
// structures, we encode all the relevant info about a lobby-slot into a single
// string, then reformat it into a struct whenever we want to work with it.
// We hide this implementation detail from callers.
private MLAPI.NetworkedVar.Collections.NetworkedList<string> m_CharSlots;
private MLAPI.NetworkedVar.NetworkedVarBool m_Ready;
private void Awake()
{
m_CharSlots = new MLAPI.NetworkedVar.Collections.NetworkedList<string>();
m_Ready = new MLAPI.NetworkedVar.NetworkedVarBool(false);
}
CharSlots = new MLAPI.NetworkedVar.Collections.NetworkedList<string>();
m_CharSlots.OnListChanged += OnCharSlotsListChanged;
m_Ready.OnValueChanged += OnReadyValueChanged;
}
private void OnCharSlotsListChanged(MLAPI.NetworkedVar.Collections.NetworkedListEvent<string> changeEvent)
{
OnCharSelectSlotChanged?.Invoke(changeEvent.index, new CharSelectSlot(changeEvent.value));
private void OnReadyValueChanged(bool oldValue, bool newValue)
{
if (newValue)
{
OnLobbyLockedIn?.Invoke();
}
}
/// <summary>
/// RPC to notify the server that a new client is in the lobby and is ready for a seat in the lobby.
/// </summary>
[ServerRPC(RequireOwnership = false)]
public void RpcRequestLobbyIndex(ulong clientId)
{
OnRequestLobbyIndex?.Invoke(clientId);
}
/// <summary>
/// RPC to notify the server that a client has chosen their class and/or locked in their choice.
/// </summary>
[ServerRPC(RequireOwnership = false)]
public void RpcChangeSlot(ulong clientId, CharacterTypeEnum newClass, bool isMale, SlotState newState)
{
OnClientChangedSlot?.Invoke(clientId, newClass, isMale, newState);
}
/// <summary>
/// RPC to tell a client which slot in the char-gen screen they will be using.
/// </summary>
/// <param name="movementTarget">Index on the UI screen, starting at 0 for the first slot</param>
[ClientRPC]
public void RpcAssignLobbyIndex(int idx)
{
OnAssignedLobbyIndex?.Invoke(idx);
}
#endregion
}

10
Assets/BossRoom/Scripts/Shared/NetworkCharacterState.cs


public NetworkedVarInt HitPoints;
public NetworkedVarInt Mana;
public NetworkedVar<LifeState> NetworkLifeState { get; } = new NetworkedVar<LifeState>(LifeState.ALIVE);
/// <summary>
/// For players, indicates the class they chose in char-select. (Not currently used by monsters)
/// </summary>
public NetworkedVar<CharacterTypeEnum> CharacterClass { get; } = new NetworkedVar<CharacterTypeEnum>();
/// <summary>
/// For players, indicates whether they wanted a male or female avatar. (Not used by monsters)
/// </summary>
public NetworkedVarBool IsMale { get; } = new NetworkedVarBool();
/// <summary>
/// Gets invoked when inputs are received from the client which own this networked character.

17
Assets/BossRoom/Scripts/Shared/SliceBehaviors/EmptySliceBehavior.cs


/*
public class EmptySliceBehavior : SliceBehavior
public class EmptySliceBehavior : SliceBehavior
{
public override void OnAllSlicesStarted()
public override void OnAllSlicesStarted()
{
}
}
public override void OnSliceMessageReceived(int senderId, string message)
{
}
public override void OnSliceMessageReceived(int senderId, string message)
{
}
*/

64
Assets/BossRoom/Prefabs/Character/CharacterSet for CharSelect (Variant).prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &4926699434532566587
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3736552308919084700, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Name
value: CharacterSet for CharSelect (Variant)
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4076098699203836966, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7943089997373843793, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
propertyPath: m_Enabled
value: 0
objectReference: {fileID: 0}
m_RemovedComponents:
- {fileID: 7943089997373843793, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}
m_SourcePrefab: {fileID: 100100000, guid: d396ab139e993ee43b2eb29978bba8ff, type: 3}

7
Assets/BossRoom/Prefabs/Character/CharacterSet for CharSelect (Variant).prefab.meta


fileFormatVersion: 2
guid: 03689ff22af434145b02b800832a2431
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/BossRoom/Prefabs/UI.meta


fileFormatVersion: 2
guid: 3493764e635a02940b0278474d8965ef
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

76
Assets/BossRoom/Scripts/Client/Game/Character/ModelAppearanceSetter.cs


using UnityEngine;
namespace BossRoom.Visual
{
/// <summary>
/// Sets the visual representation of a player character to a
/// specific class and gender. (Note: internals of this class will
/// be replaced, but the front-facing interface will remain.)
/// </summary>
public class ModelAppearanceSetter : MonoBehaviour
{
private ModelSwap[] m_BodyParts;
private Animator m_Animator;
private void Awake()
{
m_BodyParts = GetComponents<ModelSwap>();
m_Animator = GetComponent<Animator>();
}
public void SetModel(CharacterTypeEnum Class, bool IsMale)
{
int newModelIndex = MapToModelIdx(Class, IsMale);
for (int x = 0; x < m_BodyParts.Length; ++x)
{
if (m_BodyParts[ x ])
m_BodyParts[ x ].SetModel(newModelIndex);
}
}
public enum UIGesture
{
Selected,
LockedIn,
}
/// <summary>
/// A way for the lobby UI to tell a dummy character model
/// to perform a "yay, you selected me!" type animation. This
/// interface should not be used during actual gameplay.
/// </summary>
public void PerformUIGesture(UIGesture gesture)
{
// just uses existing triggers that happen to be handy.
// Will be replaced with UI-specific triggers
switch (gesture)
{
case UIGesture.Selected:
m_Animator.SetTrigger("BeginRevive");
break;
case UIGesture.LockedIn:
m_Animator.SetTrigger("BeginRevive");
break;
}
}
private int MapToModelIdx(CharacterTypeEnum Class, bool IsMale)
{
switch (Class)
{
case CharacterTypeEnum.ARCHER:
return IsMale ? 0 : 1;
case CharacterTypeEnum.MAGE:
return IsMale ? 2 : 3;
case CharacterTypeEnum.ROGUE:
return IsMale ? 4 : 5;
case CharacterTypeEnum.TANK:
return IsMale ? 6 : 7;
default:
Debug.LogError("Cannot map " + Class + " " + (IsMale ? "male" : "female") + "!");
return 0;
}
}
}
}

11
Assets/BossRoom/Scripts/Client/Game/Character/ModelAppearanceSetter.cs.meta


fileFormatVersion: 2
guid: aa17b16346702814286158f2a1378d10
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

228
Assets/BossRoom/Scripts/Client/UI/UICharSelectController.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace BossRoom.Client
{
public class UICharSelectController : MonoBehaviour
{
#region Variables set in editor
[SerializeField]
[Tooltip("Connect to dummy character model in the char-select screen")]
private BossRoom.Visual.ModelAppearanceSetter m_InSceneCharacter;
[SerializeField]
[Tooltip("Collection of 8 portrait-box UI elements, one for each potential lobby member")]
private List<UICharSelectPlayerStateBox> m_PlayerStateBoxes;
[SerializeField]
private Text m_PlayerNumberText;
[SerializeField]
private Text m_ClassNameText;
[SerializeField]
private Button m_ClassButtonTank;
[SerializeField]
private Button m_ClassButtonMage;
[SerializeField]
private Button m_ClassButtonRogue;
[SerializeField]
private Button m_ClassButtonArcher;
[SerializeField]
private Button m_GenderButtonMale;
[SerializeField]
private Button m_GenderButtonFemale;
[SerializeField]
private List<GameObject> m_HideTheseUIElementsWhenLobbyIsLockedIn;
[SerializeField]
private List<GameObject> m_ShowTheseUIElementsWhenLobbyIsLockedIn;
[SerializeField]
[Tooltip("Message shown in the char-gen screen. {0} will be replaced with the player's seat number")]
private string m_WelcomeMsg = "Welcome, P{0}!";
#endregion
private Dictionary<CharacterTypeEnum, Button> m_ClassButtons;
private CharacterTypeEnum m_Class;
private CharSelectData.SlotState m_SlotState;
private bool m_IsMale;
private void Awake()
{
Debug.Log("CharSelectUIController.Awake");
m_ClassButtons = new Dictionary<CharacterTypeEnum, Button>
{
[ CharacterTypeEnum.TANK ] = m_ClassButtonTank,
[ CharacterTypeEnum.MAGE ] = m_ClassButtonMage,
[ CharacterTypeEnum.ROGUE ] = m_ClassButtonRogue,
[ CharacterTypeEnum.ARCHER ] = m_ClassButtonArcher,
};
}
private void Start()
{
m_Class = CharacterTypeEnum.TANK;
m_IsMale = true;
CreateStateList();
if (ClientCharSelectState.Instance == null)
Debug.LogError("No CharSelectData in scene!");
ClientCharSelectState.Instance.CharSelectData.OnAssignedLobbyIndex += OnAssignedLobbyIndex;
ClientCharSelectState.Instance.CharSelectData.OnCharSelectSlotChanged += OnCharSelectSlotChanged;
ClientCharSelectState.Instance.CharSelectData.OnLobbyLockedIn += OnLobbyLockedIn;
m_InSceneCharacter.SetModel(m_Class, m_IsMale);
SetButtonInteractibleness();
}
private void OnDestroy()
{
if (ClientCharSelectState.Instance)
{
ClientCharSelectState.Instance.CharSelectData.OnAssignedLobbyIndex -= OnAssignedLobbyIndex;
ClientCharSelectState.Instance.CharSelectData.OnCharSelectSlotChanged -= OnCharSelectSlotChanged;
ClientCharSelectState.Instance.CharSelectData.OnLobbyLockedIn -= OnLobbyLockedIn;
}
}
private void CreateStateList()
{
for (int x = 0; x < m_PlayerStateBoxes.Count; ++x)
{
m_PlayerStateBoxes[ x ].SetPlayerSlotIndex(x);
var slotData = ClientCharSelectState.Instance.CharSelectData.GetCharSelectSlot(x);
m_PlayerStateBoxes[ x ].SetClassAndState(slotData.Class, slotData.State);
}
}
private void SetClass(CharacterTypeEnum newClass)
{
// TODO: these labels will be pulled from class data?
string className = "";
switch (newClass)
{
case CharacterTypeEnum.TANK:
className = "TANK";
break;
case CharacterTypeEnum.MAGE:
className = "MAGE";
break;
case CharacterTypeEnum.ROGUE:
className = "ROGUE";
break;
case CharacterTypeEnum.ARCHER:
className = "ARCHER";
break;
default:
className = "error";
Debug.LogError("Can't handle class " + newClass);
break;
}
m_ClassNameText.text = className;
m_Class = newClass;
m_SlotState = CharSelectData.SlotState.ACTIVE;
m_InSceneCharacter.SetModel(m_Class, m_IsMale);
m_InSceneCharacter.PerformUIGesture(Visual.ModelAppearanceSetter.UIGesture.Selected);
SetButtonInteractibleness();
ClientCharSelectState.Instance.ChangeSlot(m_Class, m_IsMale, m_SlotState);
}
private void SetSlotState(CharSelectData.SlotState newSlotState)
{
m_SlotState = newSlotState;
SetButtonInteractibleness();
ClientCharSelectState.Instance.ChangeSlot(m_Class, m_IsMale, m_SlotState);
if (newSlotState == CharSelectData.SlotState.LOCKEDIN)
{
m_InSceneCharacter.PerformUIGesture(Visual.ModelAppearanceSetter.UIGesture.LockedIn);
}
}
private void SetGender(bool newIsMale)
{
m_IsMale = newIsMale;
m_InSceneCharacter.SetModel(m_Class, m_IsMale);
m_InSceneCharacter.PerformUIGesture(Visual.ModelAppearanceSetter.UIGesture.Selected);
SetButtonInteractibleness();
ClientCharSelectState.Instance.ChangeSlot(m_Class, m_IsMale, m_SlotState);
}
private void SetButtonInteractibleness()
{
foreach (var btn in m_ClassButtons.Values)
{
btn.interactable = true;
}
m_ClassButtons[ m_Class ].interactable = false;
m_GenderButtonMale.interactable = !m_IsMale;
m_GenderButtonFemale.interactable = m_IsMale;
}
#region UI Event callbacks (these are directly called by the UI elements in CharSelect scene)
public void OnClickClassButtonTank()
{
SetClass(CharacterTypeEnum.TANK);
}
public void OnClickClassButtonCaster()
{
SetClass(CharacterTypeEnum.MAGE);
}
public void OnClickClassButtonRogue()
{
SetClass(CharacterTypeEnum.ROGUE);
}
public void OnClickClassButtonArcher()
{
SetClass(CharacterTypeEnum.ARCHER);
}
public void OnClickLock()
{
SetSlotState(CharSelectData.SlotState.LOCKEDIN);
}
public void OnClickMale()
{
SetGender(true);
}
public void OnClickFemale()
{
SetGender(false);
}
#endregion
#region networking callbacks
private void OnAssignedLobbyIndex(int index)
{
m_PlayerNumberText.text = string.Format(m_WelcomeMsg, (index + 1));
SetClass(CharacterTypeEnum.TANK);
}
private void OnCharSelectSlotChanged(int slotIdx, CharSelectData.CharSelectSlot slot)
{
m_PlayerStateBoxes[ slotIdx ].SetClassAndState(slot.Class, slot.State);
}
private void OnLobbyLockedIn()
{
foreach (var go in m_HideTheseUIElementsWhenLobbyIsLockedIn)
{
go.SetActive(false);
}
foreach (var go in m_ShowTheseUIElementsWhenLobbyIsLockedIn)
{
go.SetActive(true);
}
}
#endregion
}
}

11
Assets/BossRoom/Scripts/Client/UI/UICharSelectController.cs.meta


fileFormatVersion: 2
guid: e87a029d623e77e4a9ba0d46821a4c54
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

118
Assets/BossRoom/Scripts/Client/UI/UICharSelectPlayerStateBox.cs


using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace BossRoom.Client
{
public class UICharSelectPlayerStateBox : MonoBehaviour
{
#region Variables set in editor
[SerializeField]
private UICharSelectPlayerStateBoxSettings m_StateInactive;
[SerializeField]
private UICharSelectPlayerStateBoxSettings m_StateTankActive;
[SerializeField]
private UICharSelectPlayerStateBoxSettings m_StateTankLockedIn;
[SerializeField]
private UICharSelectPlayerStateBoxSettings m_StateMageActive;
[SerializeField]
private UICharSelectPlayerStateBoxSettings m_StateMageLockedIn;
[SerializeField]
private UICharSelectPlayerStateBoxSettings m_StateRogueActive;
[SerializeField]
private UICharSelectPlayerStateBoxSettings m_StateRogueLockedIn;
[SerializeField]
private UICharSelectPlayerStateBoxSettings m_StateArcherActive;
[SerializeField]
private UICharSelectPlayerStateBoxSettings m_StateArcherLockedIn;
[SerializeField]
[Tooltip("Label shown in each char-gen slot. {0} will be replaced with that slot's number")]
private string m_SeatNumberMsg = "P{0}";
#endregion
private int m_PlayerIndex; // 0-based; e.g. this is 0 for Player 1, 1 for Player 2, etc.
private CharacterTypeEnum m_CharacterClass;
private CharSelectData.SlotState m_State;
private UICharSelectPlayerStateBoxSettings m_CurStateGraphics;
public void SetPlayerSlotIndex(int idx)
{
m_PlayerIndex = idx;
ChooseAndUpdateState();
}
public void SetClassAndState(CharacterTypeEnum playerClass, CharSelectData.SlotState state)
{
m_CharacterClass = playerClass;
m_State = state;
ChooseAndUpdateState();
}
private void ChooseAndUpdateState()
{
if (m_State == CharSelectData.SlotState.INACTIVE)
{
UpdateState(m_StateInactive);
}
else if (m_State == CharSelectData.SlotState.ACTIVE)
{
switch (m_CharacterClass)
{
case CharacterTypeEnum.TANK:
UpdateState(m_StateTankActive);
break;
case CharacterTypeEnum.MAGE:
UpdateState(m_StateMageActive);
break;
case CharacterTypeEnum.ROGUE:
UpdateState(m_StateRogueActive);
break;
case CharacterTypeEnum.ARCHER:
UpdateState(m_StateArcherActive);
break;
default:
Debug.LogError("UI can't handle class " + m_CharacterClass);
break;
}
}
else if (m_State == CharSelectData.SlotState.LOCKEDIN)
{
switch (m_CharacterClass)
{
case CharacterTypeEnum.TANK:
UpdateState(m_StateTankLockedIn);
break;
case CharacterTypeEnum.MAGE:
UpdateState(m_StateMageLockedIn);
break;
case CharacterTypeEnum.ROGUE:
UpdateState(m_StateRogueLockedIn);
break;
case CharacterTypeEnum.ARCHER:
UpdateState(m_StateArcherLockedIn);
break;
default:
Debug.LogError("UI can't handle class " + m_CharacterClass);
break;
}
}
}
private void UpdateState(UICharSelectPlayerStateBoxSettings stateGraphics)
{
if (m_CurStateGraphics != null)
{
m_CurStateGraphics.GraphicsRoot.SetActive(false);
}
m_CurStateGraphics = stateGraphics;
m_CurStateGraphics.GraphicsRoot.SetActive(true);
if (m_State == CharSelectData.SlotState.INACTIVE)
m_CurStateGraphics.PlayerIndexText.text = "";
else
m_CurStateGraphics.PlayerIndexText.text = string.Format(m_SeatNumberMsg, (m_PlayerIndex + 1));
}
}
}

11
Assets/BossRoom/Scripts/Client/UI/UICharSelectPlayerStateBox.cs.meta


fileFormatVersion: 2
guid: 202b55377fea5a54caed392aa936bfe8
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

19
Assets/BossRoom/Scripts/Client/UI/UICharSelectPlayerStateBoxSettings.cs


using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace BossRoom.Client
{
/// <summary>
/// Describes one of the many possible configurations of a char-select screen player state box.
/// (This is separated out allow for more specialization in the future, e.g. providing a root node
/// for particles or a placement point for a 3d character representation.)
/// </summary>
public class UICharSelectPlayerStateBoxSettings : MonoBehaviour
{
public GameObject GraphicsRoot;
public Text PlayerIndexText;
}
}

11
Assets/BossRoom/Scripts/Client/UI/UICharSelectPlayerStateBoxSettings.cs.meta


fileFormatVersion: 2
guid: 9e4bc741eb891d4449eba7781ae3b09c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

56
Assets/BossRoom/Scripts/Server/Game/LobbyResults.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BossRoom.Server
{
/// <summary>
/// Records the results of the lobby screen: all the players' choices.
/// This is used when setting up the in-game characters.
/// (It's a singleton so that it persists beyond the char-select scene.)
/// </summary>
class LobbyResults
{
private static LobbyResults s_Instance;
public static LobbyResults GetInstance()
{
if (s_Instance == null)
s_Instance = new LobbyResults();
return s_Instance;
}
public struct CharSelectChoice
{
public CharacterTypeEnum Class;
public bool IsMale;
public CharSelectChoice(CharacterTypeEnum Class, bool IsMale)
{
this.Class = Class;
this.IsMale = IsMale;
}
}
private Dictionary<ulong, CharSelectChoice> m_Choices = new Dictionary<ulong, CharSelectChoice>();
public CharSelectChoice GetCharSelectChoiceForClient(ulong clientId)
{
CharSelectChoice returnValue;
if (!m_Choices.TryGetValue(clientId, out returnValue))
{
// We don't know about this client ID! That probably means they joined the game late!
// We don't yet handle this scenario (e.g. showing them a "wait for next game" screen, maybe?),
// so for now we just let them join. We'll give them some generic char-gen choices.
returnValue = new CharSelectChoice(CharacterTypeEnum.TANK, true);
m_Choices.Add(clientId, returnValue);
}
return returnValue;
}
public void SetCharSelectChoiceForClient(ulong clientId, CharSelectChoice choices)
{
m_Choices[ clientId ] = choices;
}
}
}

11
Assets/BossRoom/Scripts/Server/Game/LobbyResults.cs.meta


fileFormatVersion: 2
guid: c108df5fde8e9ac4db010a42b4e80545
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

24
Assets/BossRoom/Scripts/Shared/Game/CharacterTypeEnum.cs


using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BossRoom
{
/// <summary>
/// This corresponds to a CharacterClass ScriptableObject data object, containing the core gameplay data for
/// a given class.
/// </summary>
public enum CharacterTypeEnum
{
//heroes
TANK,
ARCHER,
MAGE,
ROGUE,
//monsters
IMP,
IMP_BOSS,
}
}

11
Assets/BossRoom/Scripts/Shared/Game/CharacterTypeEnum.cs.meta


fileFormatVersion: 2
guid: 349966cf4b3aa534dac5f040a049ee3d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/BossRoom/Textures/UI/CharSelect.meta


fileFormatVersion: 2
guid: 4741726609333634e96c4568b28af4f7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Assets/BossRoom/Prefabs/UI/PlayerStateBoxTemplate.prefab
文件差异内容过多而无法显示
查看文件

7
Assets/BossRoom/Prefabs/UI/PlayerStateBoxTemplate.prefab.meta


fileFormatVersion: 2
guid: ff848390065bf914fb60582f4d872815
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

64
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Archer.png

之前 之后
宽度: 256  |  高度: 350  |  大小: 10 KiB

120
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Archer.png.meta


fileFormatVersion: 2
guid: d3a18284d520971458fd9484fcddce3c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

25
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Caster.png

之前 之后
宽度: 256  |  高度: 350  |  大小: 9.9 KiB

120
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Caster.png.meta


fileFormatVersion: 2
guid: dc6b1af2a6571f448bd5b64b3226a674
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

27
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Rogue.png

之前 之后
宽度: 256  |  高度: 350  |  大小: 9.3 KiB

120
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Rogue.png.meta


fileFormatVersion: 2
guid: a7db621d683e73b4f95661bb6f386fb7
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

24
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Tank.png

之前 之后
宽度: 256  |  高度: 350  |  大小: 9.2 KiB

120
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Confirmed_Tank.png.meta


fileFormatVersion: 2
guid: 2144dac68fb45f341af27db9a7508c35
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

8
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_NotSelected.png

之前 之后
宽度: 256  |  高度: 350  |  大小: 5.1 KiB

120
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_NotSelected.png.meta


fileFormatVersion: 2
guid: 339be192a86e0f44895b85c25369ba8f
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

20
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Archer.png

之前 之后
宽度: 256  |  高度: 350  |  大小: 5.4 KiB

120
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Archer.png.meta


fileFormatVersion: 2
guid: 3e2bf7e2be5c40f488c09c4fde0c3aeb
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

14
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Caster.png

之前 之后
宽度: 256  |  高度: 350  |  大小: 5.1 KiB

120
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Caster.png.meta


fileFormatVersion: 2
guid: aa9a6e275a049ca4db2769ff3531dd90
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

14
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Rogue.png

之前 之后
宽度: 256  |  高度: 350  |  大小: 5.0 KiB

120
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Rogue.png.meta


fileFormatVersion: 2
guid: d688fbc353cd6a6459a45c4c076f0913
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

14
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Tank.png

之前 之后
宽度: 256  |  高度: 350  |  大小: 4.9 KiB

120
Assets/BossRoom/Textures/UI/CharSelect/CharFrame_BG_Selected_Tank.png.meta


fileFormatVersion: 2
guid: ad288644c421fbc429ff18c498c13066
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
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}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
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: 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: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存