Sfoglia il codice sorgente

同时兼容帧同步跟状态同步的demo

tanghai 2 anni fa
parent
commit
1a2417b327
100 ha cambiato i file con 2060 aggiunte e 77 eliminazioni
  1. BIN
      Config/Excel/cs/StartConfig/Demo/StartMachineConfigCategory.bytes
  2. BIN
      Config/Excel/cs/StartConfig/Demo/StartProcessConfigCategory.bytes
  3. BIN
      Config/Excel/cs/StartConfig/Demo/StartSceneConfigCategory.bytes
  4. BIN
      Config/Excel/cs/StartConfig/Demo/StartZoneConfigCategory.bytes
  5. BIN
      Config/Excel/s/StartConfig/Demo/StartMachineConfigCategory.bytes
  6. BIN
      Config/Excel/s/StartConfig/Demo/StartProcessConfigCategory.bytes
  7. BIN
      Config/Excel/s/StartConfig/Demo/StartSceneConfigCategory.bytes
  8. BIN
      Config/Excel/s/StartConfig/Demo/StartZoneConfigCategory.bytes
  9. 3 0
      Config/Json/cs/StartConfig/Demo/StartMachineConfig.txt
  10. 3 0
      Config/Json/cs/StartConfig/Demo/StartProcessConfig.txt
  11. 14 0
      Config/Json/cs/StartConfig/Demo/StartSceneConfig.txt
  12. 5 0
      Config/Json/cs/StartConfig/Demo/StartZoneConfig.txt
  13. 3 0
      Config/Json/s/StartConfig/Demo/StartMachineConfig.txt
  14. 3 0
      Config/Json/s/StartConfig/Demo/StartProcessConfig.txt
  15. 14 0
      Config/Json/s/StartConfig/Demo/StartSceneConfig.txt
  16. 5 0
      Config/Json/s/StartConfig/Demo/StartZoneConfig.txt
  17. 3 3
      Share/Tool/ExcelExporter/ExcelExporter.cs
  18. 8 0
      Unity/Assets/Bundles/UI/Demo.meta
  19. 0 0
      Unity/Assets/Bundles/UI/Demo/UIHelp.prefab
  20. 0 0
      Unity/Assets/Bundles/UI/Demo/UIHelp.prefab.meta
  21. 1 1
      Unity/Assets/Bundles/UI/Demo/UILobby.prefab
  22. 0 0
      Unity/Assets/Bundles/UI/Demo/UILobby.prefab.meta
  23. 0 0
      Unity/Assets/Bundles/UI/Demo/UILogin.prefab
  24. 0 0
      Unity/Assets/Bundles/UI/Demo/UILogin.prefab.meta
  25. 8 0
      Unity/Assets/Bundles/UI/LockStep.meta
  26. 374 0
      Unity/Assets/Bundles/UI/LockStep/UILSLobby.prefab
  27. 7 0
      Unity/Assets/Bundles/UI/LockStep/UILSLobby.prefab.meta
  28. 978 0
      Unity/Assets/Bundles/UI/LockStep/UILSLogin.prefab
  29. 7 0
      Unity/Assets/Bundles/UI/LockStep/UILSLogin.prefab.meta
  30. 8 0
      Unity/Assets/Config/Excel/StartConfig/Demo.meta
  31. BIN
      Unity/Assets/Config/Excel/StartConfig/Demo/StartMachineConfig@s.xlsx
  32. 7 0
      Unity/Assets/Config/Excel/StartConfig/Demo/StartMachineConfig@s.xlsx.meta
  33. BIN
      Unity/Assets/Config/Excel/StartConfig/Demo/StartProcessConfig@s.xlsx
  34. 7 0
      Unity/Assets/Config/Excel/StartConfig/Demo/StartProcessConfig@s.xlsx.meta
  35. BIN
      Unity/Assets/Config/Excel/StartConfig/Demo/StartSceneConfig@s.xlsx
  36. 7 0
      Unity/Assets/Config/Excel/StartConfig/Demo/StartSceneConfig@s.xlsx.meta
  37. BIN
      Unity/Assets/Config/Excel/StartConfig/Demo/StartZoneConfig@s.xlsx
  38. 7 0
      Unity/Assets/Config/Excel/StartConfig/Demo/StartZoneConfig@s.xlsx.meta
  39. 2 1
      Unity/Assets/Resources/GlobalConfig.asset
  40. 3 3
      Unity/Assets/Scenes/Init.unity
  41. 3 3
      Unity/Assets/Scripts/Core/Module/Entity/SceneType.cs
  42. 2 0
      Unity/Assets/Scripts/Core/Module/Network/AService.cs
  43. 3 3
      Unity/Assets/Scripts/Core/Module/Network/KChannel.cs
  44. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/Move/M2C_PathfindingResultHandler.cs
  45. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/Move/M2C_StopHandler.cs
  46. 4 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/Ping/PingComponentSystem.cs
  47. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/M2C_StartSceneChangeHandler.cs
  48. 3 2
      Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/SceneFactory.cs
  49. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_CreateMyUnitHandler.cs
  50. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_CreateUnitsHandler.cs
  51. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_RemoveUnitsHandler.cs
  52. 1 1
      Unity/Assets/Scripts/Hotfix/Client/LockStep/G2C_ChangeSceneHandler.cs
  53. 1 1
      Unity/Assets/Scripts/Hotfix/Client/LockStep/OneFrameInputsHandler.cs
  54. 1 1
      Unity/Assets/Scripts/Hotfix/Client/LockStep/OneFrameInputsHandler.cs.meta
  55. 0 3
      Unity/Assets/Scripts/Hotfix/Client/LockStep/OneFrameMessagesHandler.cs.meta
  56. 1 1
      Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_AdjustUpdateTimeHandler.cs
  57. 1 1
      Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_EnterMapHandler.cs
  58. 2 2
      Unity/Assets/Scripts/Hotfix/Server/Demo/Helper/MessageHelper.cs
  59. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Demo/Scenes/Robot/Case/RobotCase_SecondCase.cs
  60. 2 2
      Unity/Assets/Scripts/Hotfix/Server/Demo/Scenes/Robot/RobotCaseSystem.cs
  61. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Demo/Scenes/Robot/RobotManagerComponentSystem.cs
  62. 3 2
      Unity/Assets/Scripts/HotfixView/Client/Demo/Camera/CameraComponentSystem.cs
  63. 3 3
      Unity/Assets/Scripts/HotfixView/Client/Demo/EntryEvent3_InitClient.cs
  64. 0 17
      Unity/Assets/Scripts/HotfixView/Client/Demo/Global/GlobalComponentSystem.cs
  65. 1 1
      Unity/Assets/Scripts/HotfixView/Client/Demo/Scene/AfterCreateClientScene_AddComponent.cs
  66. 1 1
      Unity/Assets/Scripts/HotfixView/Client/Demo/Scene/SceneChangeStart_AddComponent.cs
  67. 1 1
      Unity/Assets/Scripts/HotfixView/Client/Demo/UI/UILobby/LoginFinish_CreateLobbyUI.cs
  68. 2 2
      Unity/Assets/Scripts/HotfixView/Client/Demo/UI/UILobby/UILobbyComponentSystem.cs
  69. 1 1
      Unity/Assets/Scripts/HotfixView/Client/Demo/UI/UILogin/AppStartInitFinish_CreateLoginUI.cs
  70. 1 1
      Unity/Assets/Scripts/HotfixView/Client/Demo/UI/UILogin/LoginFinish_RemoveLoginUI.cs
  71. 4 4
      Unity/Assets/Scripts/HotfixView/Client/Demo/Unit/AnimatorComponentSystem.cs
  72. 1 1
      Unity/Assets/Scripts/HotfixView/Client/Demo/Unit/AnimatorComponentSystem.cs.meta
  73. 220 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/LSAnimatorComponentSystem.cs
  74. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/LSAnimatorComponentSystem.cs.meta
  75. 2 2
      Unity/Assets/Scripts/HotfixView/Client/LockStep/LSUnitViewSystem.cs
  76. 1 1
      Unity/Assets/Scripts/HotfixView/Client/LockStep/LockStepAfterUnitCreate_CreateUnitFView.cs
  77. 1 1
      Unity/Assets/Scripts/HotfixView/Client/LockStep/LockStepSceneChangeStart_AddComponent.cs
  78. 1 1
      Unity/Assets/Scripts/HotfixView/Client/LockStep/LockStepSceneInitFinish_Finish.cs
  79. 8 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/Scene.meta
  80. 14 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/Scene/AfterCreateClientScene_LSAddComponent.cs
  81. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/Scene/AfterCreateClientScene_LSAddComponent.cs.meta
  82. 8 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI.meta
  83. 8 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby.meta
  84. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/LoginFinish_CreateUILSLobby.cs
  85. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/LoginFinish_CreateUILSLobby.cs.meta
  86. 27 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/UILSLobbyComponentSystem.cs
  87. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/UILSLobbyComponentSystem.cs.meta
  88. 25 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/UILSLobbyEvent.cs
  89. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/UILSLobbyEvent.cs.meta
  90. 8 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin.meta
  91. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/AppStartInitFinish_CreateUILSLogin.cs
  92. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/AppStartInitFinish_CreateUILSLogin.cs.meta
  93. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/LoginFinish_RemoveLoginUI.cs
  94. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/LoginFinish_RemoveLoginUI.cs.meta
  95. 24 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/UILSLoginEvent.cs
  96. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/UILSLoginEvent.cs.meta
  97. 32 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/UILoginComponentSystem.cs
  98. 11 0
      Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/UILoginComponentSystem.cs.meta
  99. 21 0
      Unity/Assets/Scripts/Loader/GlobalComponent.cs
  100. 1 1
      Unity/Assets/Scripts/Loader/GlobalComponent.cs.meta

BIN
Config/Excel/cs/StartConfig/Demo/StartMachineConfigCategory.bytes


BIN
Config/Excel/cs/StartConfig/Demo/StartProcessConfigCategory.bytes


BIN
Config/Excel/cs/StartConfig/Demo/StartSceneConfigCategory.bytes


BIN
Config/Excel/cs/StartConfig/Demo/StartZoneConfigCategory.bytes


BIN
Config/Excel/s/StartConfig/Demo/StartMachineConfigCategory.bytes


BIN
Config/Excel/s/StartConfig/Demo/StartProcessConfigCategory.bytes


BIN
Config/Excel/s/StartConfig/Demo/StartSceneConfigCategory.bytes


BIN
Config/Excel/s/StartConfig/Demo/StartZoneConfigCategory.bytes


+ 3 - 0
Config/Json/cs/StartConfig/Demo/StartMachineConfig.txt

@@ -0,0 +1,3 @@
+{"dict": [
+[1, {"_t":"StartMachineConfig","_id":1,"InnerIP":"127.0.0.1","OuterIP":"127.0.0.1","WatcherPort":"10000"}],
+]}

+ 3 - 0
Config/Json/cs/StartConfig/Demo/StartProcessConfig.txt

@@ -0,0 +1,3 @@
+{"dict": [
+[1, {"_t":"StartProcessConfig","_id":1,"MachineId":1,"InnerPort":20101}],
+]}

+ 14 - 0
Config/Json/cs/StartConfig/Demo/StartSceneConfig.txt

@@ -0,0 +1,14 @@
+{"dict": [
+[1, {"_t":"StartSceneConfig","_id":1,"Process":1,"Zone":1,"SceneType":"Realm","Name":"Realm","OuterPort":30002}],
+[2, {"_t":"StartSceneConfig","_id":2,"Process":1,"Zone":1,"SceneType":"Gate","Name":"Gate1","OuterPort":30003}],
+[3, {"_t":"StartSceneConfig","_id":3,"Process":1,"Zone":1,"SceneType":"Gate","Name":"Gate2","OuterPort":30004}],
+[4, {"_t":"StartSceneConfig","_id":4,"Process":1,"Zone":1,"SceneType":"Location","Name":"Location","OuterPort":0}],
+[5, {"_t":"StartSceneConfig","_id":5,"Process":1,"Zone":1,"SceneType":"Map","Name":"Map1","OuterPort":0}],
+[6, {"_t":"StartSceneConfig","_id":6,"Process":1,"Zone":1,"SceneType":"Map","Name":"Map2","OuterPort":0}],
+[200, {"_t":"StartSceneConfig","_id":200,"Process":1,"Zone":2,"SceneType":"Robot","Name":"Robot01","OuterPort":0}],
+[300, {"_t":"StartSceneConfig","_id":300,"Process":1,"Zone":3,"SceneType":"RouterManager","Name":"RouterManager","OuterPort":30300}],
+[301, {"_t":"StartSceneConfig","_id":301,"Process":1,"Zone":3,"SceneType":"Router","Name":"Router01","OuterPort":30301}],
+[302, {"_t":"StartSceneConfig","_id":302,"Process":1,"Zone":3,"SceneType":"Router","Name":"Router02","OuterPort":30302}],
+[303, {"_t":"StartSceneConfig","_id":303,"Process":1,"Zone":3,"SceneType":"Router","Name":"Router03","OuterPort":30303}],
+[304, {"_t":"StartSceneConfig","_id":304,"Process":1,"Zone":3,"SceneType":"Router","Name":"Router04","OuterPort":30304}],
+]}

+ 5 - 0
Config/Json/cs/StartConfig/Demo/StartZoneConfig.txt

@@ -0,0 +1,5 @@
+{"dict": [
+[1, {"_t":"StartZoneConfig","_id":1,"DBConnection":"mongodb://127.0.0.1","DBName":"ET1"}],
+[2, {"_t":"StartZoneConfig","_id":2,"DBConnection":"","DBName":""}],
+[3, {"_t":"StartZoneConfig","_id":3,"DBConnection":"","DBName":""}],
+]}

+ 3 - 0
Config/Json/s/StartConfig/Demo/StartMachineConfig.txt

@@ -0,0 +1,3 @@
+{"dict": [
+[1, {"_t":"StartMachineConfig","_id":1,"InnerIP":"127.0.0.1","OuterIP":"127.0.0.1","WatcherPort":"10000"}],
+]}

+ 3 - 0
Config/Json/s/StartConfig/Demo/StartProcessConfig.txt

@@ -0,0 +1,3 @@
+{"dict": [
+[1, {"_t":"StartProcessConfig","_id":1,"MachineId":1,"InnerPort":20101}],
+]}

+ 14 - 0
Config/Json/s/StartConfig/Demo/StartSceneConfig.txt

@@ -0,0 +1,14 @@
+{"dict": [
+[1, {"_t":"StartSceneConfig","_id":1,"Process":1,"Zone":1,"SceneType":"Realm","Name":"Realm","OuterPort":30002}],
+[2, {"_t":"StartSceneConfig","_id":2,"Process":1,"Zone":1,"SceneType":"Gate","Name":"Gate1","OuterPort":30003}],
+[3, {"_t":"StartSceneConfig","_id":3,"Process":1,"Zone":1,"SceneType":"Gate","Name":"Gate2","OuterPort":30004}],
+[4, {"_t":"StartSceneConfig","_id":4,"Process":1,"Zone":1,"SceneType":"Location","Name":"Location","OuterPort":0}],
+[5, {"_t":"StartSceneConfig","_id":5,"Process":1,"Zone":1,"SceneType":"Map","Name":"Map1","OuterPort":0}],
+[6, {"_t":"StartSceneConfig","_id":6,"Process":1,"Zone":1,"SceneType":"Map","Name":"Map2","OuterPort":0}],
+[200, {"_t":"StartSceneConfig","_id":200,"Process":1,"Zone":2,"SceneType":"Robot","Name":"Robot01","OuterPort":0}],
+[300, {"_t":"StartSceneConfig","_id":300,"Process":1,"Zone":3,"SceneType":"RouterManager","Name":"RouterManager","OuterPort":30300}],
+[301, {"_t":"StartSceneConfig","_id":301,"Process":1,"Zone":3,"SceneType":"Router","Name":"Router01","OuterPort":30301}],
+[302, {"_t":"StartSceneConfig","_id":302,"Process":1,"Zone":3,"SceneType":"Router","Name":"Router02","OuterPort":30302}],
+[303, {"_t":"StartSceneConfig","_id":303,"Process":1,"Zone":3,"SceneType":"Router","Name":"Router03","OuterPort":30303}],
+[304, {"_t":"StartSceneConfig","_id":304,"Process":1,"Zone":3,"SceneType":"Router","Name":"Router04","OuterPort":30304}],
+]}

+ 5 - 0
Config/Json/s/StartConfig/Demo/StartZoneConfig.txt

@@ -0,0 +1,5 @@
+{"dict": [
+[1, {"_t":"StartZoneConfig","_id":1,"DBConnection":"mongodb://127.0.0.1","DBName":"ET1"}],
+[2, {"_t":"StartZoneConfig","_id":2,"DBConnection":"","DBName":""}],
+[3, {"_t":"StartZoneConfig","_id":3,"DBConnection":"","DBName":""}],
+]}

+ 3 - 3
Share/Tool/ExcelExporter/ExcelExporter.cs

@@ -53,11 +53,11 @@ namespace ET
     {
         private static string template;
 
-        private const string ClientClassDir = "../Unity/Assets/Scripts/Codes/Model/Generate/Client/Config";
+        private const string ClientClassDir = "../Unity/Assets/Scripts/Model/Generate/Client/Config";
         // 服务端因为机器人的存在必须包含客户端所有配置,所以单独的c字段没有意义,单独的c就表示cs
-        private const string ServerClassDir = "../Unity/Assets/Scripts/Codes/Model/Generate/Server/Config";
+        private const string ServerClassDir = "../Unity/Assets/Scripts/Model/Generate/Server/Config";
 
-        private const string CSClassDir = "../Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/Config";
+        private const string CSClassDir = "../Unity/Assets/Scripts/Model/Generate/ClientServer/Config";
 
         private const string excelDir = "../Unity/Assets/Config/Excel/";
 

+ 8 - 0
Unity/Assets/Bundles/UI/Demo.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 75252cd10754145f590afd21fc4adcd6
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 0 - 0
Unity/Assets/Bundles/UI/UIHelp.prefab → Unity/Assets/Bundles/UI/Demo/UIHelp.prefab


+ 0 - 0
Unity/Assets/Bundles/UI/UIHelp.prefab.meta → Unity/Assets/Bundles/UI/Demo/UIHelp.prefab.meta


+ 1 - 1
Unity/Assets/Bundles/UI/UILobby.prefab → Unity/Assets/Bundles/UI/Demo/UILobby.prefab

@@ -371,4 +371,4 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: "\u5339\u914D"
+  m_Text: "\u8FDB\u5165"

+ 0 - 0
Unity/Assets/Bundles/UI/UILobby.prefab.meta → Unity/Assets/Bundles/UI/Demo/UILobby.prefab.meta


+ 0 - 0
Unity/Assets/Bundles/UI/UILogin.prefab → Unity/Assets/Bundles/UI/Demo/UILogin.prefab


+ 0 - 0
Unity/Assets/Bundles/UI/UILogin.prefab.meta → Unity/Assets/Bundles/UI/Demo/UILogin.prefab.meta


+ 8 - 0
Unity/Assets/Bundles/UI/LockStep.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 691adf980066447bb8b1247c60c73827
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 374 - 0
Unity/Assets/Bundles/UI/LockStep/UILSLobby.prefab

@@ -0,0 +1,374 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1386170326414932
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 224438795553994780}
+  - component: {fileID: 1431576037130298801}
+  - component: {fileID: 1431576037130298803}
+  - component: {fileID: 114905074804487618}
+  m_Layer: 5
+  m_Name: UILSLobby
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &224438795553994780
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1386170326414932}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 4771239781044397799}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!223 &1431576037130298801
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1386170326414932}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 1
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!114 &1431576037130298803
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1386170326414932}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!114 &114905074804487618
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1386170326414932}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 502d8cafd6a5a0447ab1db9a24cdcb10, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  data:
+  - key: EnterMap
+    gameObject: {fileID: 899722670427233733}
+--- !u!1 &899722670427233733
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1109878335635189875}
+  - component: {fileID: 1111846559939914969}
+  - component: {fileID: 1003519326168939849}
+  - component: {fileID: 1003626380862230063}
+  m_Layer: 5
+  m_Name: EnterMap
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1109878335635189875
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 899722670427233733}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 6091551359588390577}
+  m_Father: {fileID: 4771239781044397799}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0.000061035, y: -31.15}
+  m_SizeDelta: {x: 263.5, y: 62.3}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1111846559939914969
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 899722670427233733}
+  m_CullTransparentMesh: 0
+--- !u!114 &1003519326168939849
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 899722670427233733}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &1003626380862230063
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 899722670427233733}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Highlighted
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 1003519326168939849}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!1 &3318750498554037093
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4771239781044397799}
+  - component: {fileID: 7279718688677780413}
+  - component: {fileID: 1396409096631843897}
+  m_Layer: 5
+  m_Name: Panel
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4771239781044397799
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3318750498554037093}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 1109878335635189875}
+  m_Father: {fileID: 224438795553994780}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7279718688677780413
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3318750498554037093}
+  m_CullTransparentMesh: 0
+--- !u!114 &1396409096631843897
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3318750498554037093}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &6310363376444861169
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6091551359588390577}
+  - component: {fileID: 6089323556358314843}
+  - component: {fileID: 6197011583270449923}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6091551359588390577
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6310363376444861169}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 1109878335635189875}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &6089323556358314843
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6310363376444861169}
+  m_CullTransparentMesh: 0
+--- !u!114 &6197011583270449923
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6310363376444861169}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u5339\u914D"

+ 7 - 0
Unity/Assets/Bundles/UI/LockStep/UILSLobby.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5cb3b48a2d2a948d6b2564f64624607c
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: uilslobby.unity3d
+  assetBundleVariant: 

+ 978 - 0
Unity/Assets/Bundles/UI/LockStep/UILSLogin.prefab

@@ -0,0 +1,978 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1023474203466346
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 224073640819989714}
+  - component: {fileID: 222413101418373256}
+  - component: {fileID: 114822005217712104}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &224073640819989714
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1023474203466346}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 224922312697997914}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &222413101418373256
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1023474203466346}
+  m_CullTransparentMesh: 0
+--- !u!114 &114822005217712104
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1023474203466346}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 0
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: 
+--- !u!1 &1386170326414932
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 224438795553994780}
+  - component: {fileID: 3539700472237229061}
+  - component: {fileID: 3539700472237229083}
+  - component: {fileID: 114850350457908736}
+  m_Layer: 5
+  m_Name: UILSLogin
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &224438795553994780
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1386170326414932}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 587485265287676898}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!223 &3539700472237229061
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1386170326414932}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 1
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!114 &3539700472237229083
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1386170326414932}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!114 &114850350457908736
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1386170326414932}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 502d8cafd6a5a0447ab1db9a24cdcb10, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  data:
+  - key: Account
+    gameObject: {fileID: 1670632076201042}
+  - key: Password
+    gameObject: {fileID: 1568484768885604}
+  - key: LoginBtn
+    gameObject: {fileID: 1920061237828514}
+--- !u!1 &1568484768885604
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 224944102343361862}
+  - component: {fileID: 222162039596540310}
+  - component: {fileID: 114107327146574444}
+  - component: {fileID: 114663064108016614}
+  m_Layer: 5
+  m_Name: Password
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &224944102343361862
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1568484768885604}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 5867963764642355349}
+  - {fileID: 4976724473026745500}
+  m_Father: {fileID: 587485265287676898}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0.000061035, y: 39}
+  m_SizeDelta: {x: 263.5, y: 43.4}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &222162039596540310
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1568484768885604}
+  m_CullTransparentMesh: 0
+--- !u!114 &114107327146574444
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1568484768885604}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &114663064108016614
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1568484768885604}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Highlighted
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 114107327146574444}
+  m_TextComponent: {fileID: 6441090958199208589}
+  m_Placeholder: {fileID: 419226054395540271}
+  m_ContentType: 7
+  m_InputType: 2
+  m_AsteriskChar: 42
+  m_KeyboardType: 0
+  m_LineType: 0
+  m_HideMobileInput: 0
+  m_CharacterValidation: 0
+  m_CharacterLimit: 0
+  m_OnEndEdit:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_CustomCaretColor: 0
+  m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
+  m_Text: 
+  m_CaretBlinkRate: 0.85
+  m_CaretWidth: 1
+  m_ReadOnly: 0
+  m_ShouldActivateOnSelect: 1
+--- !u!1 &1670632076201042
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 224922312697997914}
+  - component: {fileID: 222749306122254412}
+  - component: {fileID: 114899069937167200}
+  - component: {fileID: 114341495829030012}
+  m_Layer: 5
+  m_Name: Account
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &224922312697997914
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1670632076201042}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 224608071536574582}
+  - {fileID: 224073640819989714}
+  m_Father: {fileID: 587485265287676898}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 95}
+  m_SizeDelta: {x: 263.5, y: 43.4}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &222749306122254412
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1670632076201042}
+  m_CullTransparentMesh: 0
+--- !u!114 &114899069937167200
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1670632076201042}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &114341495829030012
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1670632076201042}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Highlighted
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 114899069937167200}
+  m_TextComponent: {fileID: 114822005217712104}
+  m_Placeholder: {fileID: 114882975747376550}
+  m_ContentType: 0
+  m_InputType: 0
+  m_AsteriskChar: 42
+  m_KeyboardType: 0
+  m_LineType: 0
+  m_HideMobileInput: 0
+  m_CharacterValidation: 0
+  m_CharacterLimit: 0
+  m_OnEndEdit:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_CustomCaretColor: 0
+  m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
+  m_Text: 
+  m_CaretBlinkRate: 0.85
+  m_CaretWidth: 1
+  m_ReadOnly: 0
+  m_ShouldActivateOnSelect: 1
+--- !u!1 &1910298475376026
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 224608071536574582}
+  - component: {fileID: 222577866995156442}
+  - component: {fileID: 114882975747376550}
+  m_Layer: 5
+  m_Name: Placeholder
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &224608071536574582
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1910298475376026}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 224922312697997914}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &222577866995156442
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1910298475376026}
+  m_CullTransparentMesh: 0
+--- !u!114 &114882975747376550
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1910298475376026}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 20
+    m_FontStyle: 2
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u8BF7\u8F93\u5165\u5E10\u53F7"
+--- !u!1 &1920061237828514
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 224532636050568724}
+  - component: {fileID: 222002149542603454}
+  - component: {fileID: 114719520540637998}
+  - component: {fileID: 114630311973242952}
+  m_Layer: 5
+  m_Name: LoginBtn
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &224532636050568724
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1920061237828514}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 9179437439726352980}
+  m_Father: {fileID: 587485265287676898}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0.000061035, y: -31.15}
+  m_SizeDelta: {x: 263.5, y: 62.3}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &222002149542603454
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1920061237828514}
+  m_CullTransparentMesh: 0
+--- !u!114 &114719520540637998
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1920061237828514}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &114630311973242952
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1920061237828514}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Highlighted
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 114719520540637998}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!1 &3540279927782159835
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5867963764642355349}
+  - component: {fileID: 3978422665326291541}
+  - component: {fileID: 419226054395540271}
+  m_Layer: 5
+  m_Name: Placeholder
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5867963764642355349
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3540279927782159835}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 224944102343361862}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3978422665326291541
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3540279927782159835}
+  m_CullTransparentMesh: 0
+--- !u!114 &419226054395540271
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3540279927782159835}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 20
+    m_FontStyle: 2
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u8BF7\u8F93\u5165\u5BC6\u7801"
+--- !u!1 &6506693271730501888
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4976724473026745500}
+  - component: {fileID: 2798552886333538358}
+  - component: {fileID: 6441090958199208589}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4976724473026745500
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6506693271730501888}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 224944102343361862}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2798552886333538358
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6506693271730501888}
+  m_CullTransparentMesh: 0
+--- !u!114 &6441090958199208589
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6506693271730501888}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 0
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: 
+--- !u!1 &7873383034294747804
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 587485265287676898}
+  - component: {fileID: 472622439637420277}
+  - component: {fileID: 7112356912848213450}
+  m_Layer: 5
+  m_Name: Panel
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &587485265287676898
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7873383034294747804}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 224922312697997914}
+  - {fileID: 224944102343361862}
+  - {fileID: 224532636050568724}
+  m_Father: {fileID: 224438795553994780}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &472622439637420277
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7873383034294747804}
+  m_CullTransparentMesh: 0
+--- !u!114 &7112356912848213450
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7873383034294747804}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8980575198950994637
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 9179437439726352980}
+  - component: {fileID: 5147171991802899085}
+  - component: {fileID: 8157683825637251279}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &9179437439726352980
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8980575198950994637}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 224532636050568724}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5147171991802899085
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8980575198950994637}
+  m_CullTransparentMesh: 0
+--- !u!114 &8157683825637251279
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8980575198950994637}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u767B\u5F55"

+ 7 - 0
Unity/Assets/Bundles/UI/LockStep/UILSLogin.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f29d435e196cd421aa7a7700402942f3
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: uilslogin.unity3d
+  assetBundleVariant: 

+ 8 - 0
Unity/Assets/Config/Excel/StartConfig/Demo.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fa17211b004284abdb07543b41e1970a
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Unity/Assets/Config/Excel/StartConfig/Demo/StartMachineConfig@s.xlsx


+ 7 - 0
Unity/Assets/Config/Excel/StartConfig/Demo/StartMachineConfig@s.xlsx.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3bde753307a6b4896bc3cff40e5cc032
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Unity/Assets/Config/Excel/StartConfig/Demo/StartProcessConfig@s.xlsx


+ 7 - 0
Unity/Assets/Config/Excel/StartConfig/Demo/StartProcessConfig@s.xlsx.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f3e3d635526a9445e9f58681f8041cf4
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Unity/Assets/Config/Excel/StartConfig/Demo/StartSceneConfig@s.xlsx


+ 7 - 0
Unity/Assets/Config/Excel/StartConfig/Demo/StartSceneConfig@s.xlsx.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e351797abcf9d42e5bf348faad45a4be
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Unity/Assets/Config/Excel/StartConfig/Demo/StartZoneConfig@s.xlsx


+ 7 - 0
Unity/Assets/Config/Excel/StartConfig/Demo/StartZoneConfig@s.xlsx.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: eb72de07766ca4a8b90b78c86167df56
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 2 - 1
Unity/Assets/Resources/GlobalConfig.asset

@@ -12,5 +12,6 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 36527db572638af47b03c805671cba75, type: 3}
   m_Name: GlobalConfig
   m_EditorClassIdentifier: 
-  CodeMode: 1
+  CodeMode: 3
   BuildType: 1
+  SceneType: LockStep

+ 3 - 3
Unity/Assets/Scenes/Init.unity

@@ -959,14 +959,14 @@ Transform:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1984349696}
-  m_LocalRotation: {x: 0.12186928, y: 0, z: 0, w: 0.9925462}
-  m_LocalPosition: {x: 10, y: 6, z: 0}
+  m_LocalRotation: {x: 0.5, y: 0, z: 0, w: 0.8660254}
+  m_LocalPosition: {x: 2.1579952, y: 35.460117, z: -32.150215}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 575235020}
   m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 14, y: 0, z: 0}
+  m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0}
 --- !u!114 &1984349698
 MonoBehaviour:
   m_ObjectHideFlags: 0

+ 3 - 3
Unity/Assets/Scripts/Core/Module/Entity/SceneType.cs

@@ -25,10 +25,10 @@ namespace ET
 		LockStepServer = 1 << 17,
 
 		// 客户端Model层
-		Client = 1 << 30,
+		Demo = 1 << 30,
 		Current = 1ul << 31,
-		
-		
+		LockStep = 1ul << 32,
+
 		All = ulong.MaxValue,
 	}
 

+ 2 - 0
Unity/Assets/Scripts/Core/Module/Network/AService.cs

@@ -24,6 +24,7 @@ namespace ET
                     Log.Debug($"message serialize cache: {message.GetType().FullName}");
                     return lastMessageInfo.MemoryStream;
                 }
+
                 stream = new MemoryBuffer(); // 因为广播,可能MemoryBuffer会用多次,所以不能用对象池
                 MessageSerializeHelper.MessageToStream(stream, message);
                 this.lastMessageInfo = (message, stream);
@@ -32,6 +33,7 @@ namespace ET
             {
                 stream = NetServices.Instance.Fetch();
                 MessageSerializeHelper.MessageToStream(stream, message);
+                NetServices.Instance.RecycleMessage(message);
             }
             return stream;
         }

+ 3 - 3
Unity/Assets/Scripts/Core/Module/Network/KChannel.cs

@@ -187,11 +187,11 @@ namespace ET
 				{
 					return;
 				}
-
+				
 				// 300毫秒后再次update发送connect请求
 				if (timeNow < this.lastConnectTime + 300)
 				{
-					this.Service.AddToUpdate(0, this.Id);
+					this.Service.AddToUpdate(300, this.Id);
 					return;
 				}
 				
@@ -212,7 +212,7 @@ namespace ET
 
 				this.lastConnectTime = timeNow;
 
-				this.Service.AddToUpdate(0, this.Id);
+				this.Service.AddToUpdate(300, this.Id);
 			}
 			catch (Exception e)
 			{

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Move/M2C_PathfindingResultHandler.cs

@@ -2,7 +2,7 @@
 
 namespace ET.Client
 {
-	[MessageHandler(SceneType.Client)]
+	[MessageHandler(SceneType.Demo)]
 	public class M2C_PathfindingResultHandler : AMHandler<M2C_PathfindingResult>
 	{
 		protected override async ETTask Run(Session session, M2C_PathfindingResult message)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Move/M2C_StopHandler.cs

@@ -2,7 +2,7 @@
 
 namespace ET.Client
 {
-	[MessageHandler(SceneType.Client)]
+	[MessageHandler(SceneType.Demo)]
 	public class M2C_StopHandler : AMHandler<M2C_Stop>
 	{
 		protected override async ETTask Run(Session session, M2C_Stop message)

+ 4 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Ping/PingComponentSystem.cs

@@ -25,7 +25,8 @@ namespace ET.Client
                 long time1 = TimeHelper.ClientNow();
                 try
                 {
-                    G2C_Ping response = await session.Call(new C2G_Ping()) as G2C_Ping;
+                    C2G_Ping c2GPing = NetServices.Instance.FetchMessage<C2G_Ping>();
+                    G2C_Ping response = await session.Call(c2GPing) as G2C_Ping;
 
                     if (self.InstanceId != instanceId)
                     {
@@ -37,6 +38,8 @@ namespace ET.Client
                     
                     TimeInfo.Instance.ServerMinusClientTime = response.Time + (time2 - time1) / 2 - time2;
 
+                    NetServices.Instance.RecycleMessage(response);
+                    
                     await TimerComponent.Instance.WaitAsync(2000);
                 }
                 catch (RpcException e)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/M2C_StartSceneChangeHandler.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-	[MessageHandler(SceneType.Client)]
+	[MessageHandler(SceneType.Demo)]
 	public class M2C_StartSceneChangeHandler : AMHandler<M2C_StartSceneChange>
 	{
 		protected override async ETTask Run(Session session, M2C_StartSceneChange message)

+ 3 - 2
Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/SceneFactory.cs

@@ -4,13 +4,14 @@ namespace ET.Client
 {
     public static class SceneFactory
     {
-        public static async ETTask<Scene> CreateClientScene(int zone, string name)
+        public static async ETTask<Scene> CreateClientScene(int zone, SceneType sceneType, string name)
         {
             await ETTask.CompletedTask;
             
-            Scene clientScene = EntitySceneFactory.CreateScene(zone, SceneType.Client, name, ClientSceneManagerComponent.Instance);
+            Scene clientScene = EntitySceneFactory.CreateScene(zone, sceneType, name, ClientSceneManagerComponent.Instance);
             clientScene.AddComponent<ObjectWait>();
             clientScene.AddComponent<PlayerComponent>();
+            clientScene.AddComponent<CurrentScenesComponent>();
             
             EventSystem.Instance.Publish(clientScene, new EventType.AfterCreateClientScene());
             return clientScene;

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_CreateMyUnitHandler.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-	[MessageHandler(SceneType.Client)]
+	[MessageHandler(SceneType.Demo)]
 	public class M2C_CreateMyUnitHandler : AMHandler<M2C_CreateMyUnit>
 	{
 		protected override async ETTask Run(Session session, M2C_CreateMyUnit message)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_CreateUnitsHandler.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-	[MessageHandler(SceneType.Client)]
+	[MessageHandler(SceneType.Demo)]
 	public class M2C_CreateUnitsHandler : AMHandler<M2C_CreateUnits>
 	{
 		protected override async ETTask Run(Session session, M2C_CreateUnits message)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_RemoveUnitsHandler.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-	[MessageHandler(SceneType.Client)]
+	[MessageHandler(SceneType.Demo)]
 	public class M2C_RemoveUnitsHandler : AMHandler<M2C_RemoveUnits>
 	{
 		protected override async ETTask Run(Session session, M2C_RemoveUnits message)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/LockStep/G2C_ChangeSceneHandler.cs

@@ -1,7 +1,7 @@
 namespace ET.Client
 {
 
-    [MessageHandler(SceneType.Client)]
+    [MessageHandler(SceneType.LockStep)]
     public class Match2G_NotifyMatchSuccessHandler: AMHandler<Match2G_NotifyMatchSuccess>
     {
         protected override async ETTask Run(Session session, Match2G_NotifyMatchSuccess message)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/LockStep/OneFrameInputsHandler.cs

@@ -2,7 +2,7 @@ using System;
 
 namespace ET.Client
 {
-    [MessageHandler(SceneType.Client)]
+    [MessageHandler(SceneType.LockStep)]
     public class OneFrameInputsHandler: AMHandler<OneFrameInputs>
     {
         protected override async ETTask Run(Session session, OneFrameInputs input)

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/Demo/Global/GlobalComponentSystem.cs.meta → Unity/Assets/Scripts/Hotfix/Client/LockStep/OneFrameInputsHandler.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: f7d5791d3131db54db3ff0b1f1c7ad01
+guid: ce16289caea864b01988193d7ea2e08a
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 0 - 3
Unity/Assets/Scripts/Hotfix/Client/LockStep/OneFrameMessagesHandler.cs.meta

@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: dd922e556a934545ae5e3ee443eefa16
-timeCreated: 1681740597

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_AdjustUpdateTimeHandler.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-    [MessageHandler(SceneType.Client)]
+    [MessageHandler(SceneType.LockStep)]
     public class Room2C_AdjustUpdateTimeHandler: AMHandler<Room2C_AdjustUpdateTime>
     {
         protected override async ETTask Run(Session session, Room2C_AdjustUpdateTime message)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_EnterMapHandler.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-    [MessageHandler(SceneType.Client)]
+    [MessageHandler(SceneType.LockStep)]
     public class Room2C_EnterMapHandler: AMHandler<Room2C_Start>
     {
         protected override async ETTask Run(Session session, Room2C_Start message)

+ 2 - 2
Unity/Assets/Scripts/Hotfix/Server/Demo/Helper/MessageHelper.cs

@@ -25,7 +25,7 @@ namespace ET.Server
         {
             Dictionary<long, AOIEntity> dict = unit.GetBeSeePlayers();
             // 网络底层做了优化,同一个消息不会多次序列化
-            ActorLocationSenderOneType oneTypeLocationType = ActorLocationSenderComponent.Instance.Get(LocationType.Player);
+            ActorLocationSenderOneType oneTypeLocationType = ActorLocationSenderComponent.Instance.Get(LocationType.GateSession);
             foreach (AOIEntity u in dict.Values)
             {
                 oneTypeLocationType.Send(u.Unit.Id, message);
@@ -34,7 +34,7 @@ namespace ET.Server
         
         public static void SendToClient(Unit unit, IActorMessage message)
         {
-            ActorLocationSenderComponent.Instance.Get(LocationType.Player).Send(unit.Id, message);
+            ActorLocationSenderComponent.Instance.Get(LocationType.GateSession).Send(unit.Id, message);
         }
         
         

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Demo/Scenes/Robot/Case/RobotCase_SecondCase.cs

@@ -2,7 +2,7 @@ using System;
 
 namespace ET.Server
 {
-    [MessageHandler(SceneType.Client)]
+    [MessageHandler(SceneType.Demo)]
     public class M2C_TestRobotCase2Handler: AMHandler<M2C_TestRobotCase2>
     {
         protected override async ETTask Run(Session session, M2C_TestRobotCase2 message)

+ 2 - 2
Unity/Assets/Scripts/Hotfix/Server/Demo/Scenes/Robot/RobotCaseSystem.cs

@@ -76,7 +76,7 @@ namespace ET.Server
             Scene clientScene = null;
             try
             {
-                clientScene = await Client.SceneFactory.CreateClientScene(zone, name);
+                clientScene = await Client.SceneFactory.CreateClientScene(zone, SceneType.Robot, name);
                 await Client.LoginHelper.Login(clientScene, zone.ToString(), zone.ToString());
                 await Client.EnterMapHelper.EnterMapAsync(clientScene);
                 Log.Debug($"create robot ok: {zone}");
@@ -97,7 +97,7 @@ namespace ET.Server
 
             try
             {
-                clientScene = await Client.SceneFactory.CreateClientScene(zone, $"Robot_{zone}");
+                clientScene = await Client.SceneFactory.CreateClientScene(zone, SceneType.Robot, $"Robot_{zone}");
                 await Client.LoginHelper.Login(clientScene, zone.ToString(), zone.ToString());
                 await Client.EnterMapHelper.EnterMapAsync(clientScene);
                 Log.Debug($"create robot ok: {zone}");

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Demo/Scenes/Robot/RobotManagerComponentSystem.cs

@@ -10,7 +10,7 @@ namespace ET.Server
             Scene clientScene = null;
             try
             {
-                clientScene = await Client.SceneFactory.CreateClientScene(zone, "Robot");
+                clientScene = await Client.SceneFactory.CreateClientScene(zone, SceneType.Robot, "Robot");
                 await Client.LoginHelper.Login(clientScene, zone.ToString(), zone.ToString());
                 await Client.EnterMapHelper.EnterMapAsync(clientScene);
                 Log.Debug($"create robot ok: {zone}");

+ 3 - 2
Unity/Assets/Scripts/HotfixView/Client/Demo/Camera/CameraComponentSystem.cs

@@ -6,7 +6,7 @@ namespace ET.Client
 	public static class CameraComponentSystem
 	{
 		[ObjectSystem]
-		public class CameraComponentAwakeSystem : AwakeSystem<CameraComponent>
+		public class AwakeSystem : AwakeSystem<CameraComponent>
 		{
 			protected override void Awake(CameraComponent self)
 			{
@@ -15,7 +15,7 @@ namespace ET.Client
 		}
 
 		[ObjectSystem]
-		public class CameraComponentLateUpdateSystem : LateUpdateSystem<CameraComponent>
+		public class LateUpdateSystem : LateUpdateSystem<CameraComponent>
 		{
 			protected override void LateUpdate(CameraComponent self)
 			{
@@ -26,6 +26,7 @@ namespace ET.Client
 		private static void Awake(this CameraComponent self)
 		{
 			self.Camera = Camera.main;
+			self.Camera.transform.rotation = Quaternion.Euler(new Vector3(20, 0, 0));
 		}
 
 		private static void LateUpdate(this CameraComponent self)

+ 3 - 3
Unity/Assets/Scripts/HotfixView/Client/Demo/EntryEvent3_InitClient.cs

@@ -10,12 +10,12 @@ namespace ET.Client
         {
             // 加载配置
             Root.Instance.Scene.AddComponent<ResourcesComponent>();
-            
-            Root.Instance.Scene.AddComponent<GlobalComponent>();
 
             await ResourcesComponent.Instance.LoadBundleAsync("unit.unity3d");
+
+            SceneType sceneType = EnumHelper.FromString<SceneType>(GlobalComponent.Instance.GlobalConfig.SceneType);
             
-            Scene clientScene = await SceneFactory.CreateClientScene(1, "Game");
+            Scene clientScene = await SceneFactory.CreateClientScene(1, sceneType, sceneType.ToString());
             
             await EventSystem.Instance.PublishAsync(clientScene, new EventType.AppStartInitFinish());
         }

+ 0 - 17
Unity/Assets/Scripts/HotfixView/Client/Demo/Global/GlobalComponentSystem.cs

@@ -1,17 +0,0 @@
-using UnityEngine;
-
-namespace ET.Client
-{
-    [ObjectSystem]
-    public class GlobalComponentAwakeSystem: AwakeSystem<GlobalComponent>
-    {
-        protected override void Awake(GlobalComponent self)
-        {
-            GlobalComponent.Instance = self;
-            
-            self.Global = GameObject.Find("/Global").transform;
-            self.Unit = GameObject.Find("/Global/Unit").transform;
-            self.UI = GameObject.Find("/Global/UI").transform;
-        }
-    }
-}

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/Demo/Scene/AfterCreateClientScene_AddComponent.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-    [Event(SceneType.Client)]
+    [Event(SceneType.Demo)]
     public class AfterCreateClientScene_AddComponent: AEvent<Scene, EventType.AfterCreateClientScene>
     {
         protected override async ETTask Run(Scene scene, EventType.AfterCreateClientScene args)

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/Demo/Scene/SceneChangeStart_AddComponent.cs

@@ -2,7 +2,7 @@ using UnityEngine.SceneManagement;
 
 namespace ET.Client
 {
-    [Event(SceneType.Client)]
+    [Event(SceneType.Demo)]
     public class SceneChangeStart_AddComponent: AEvent<Scene, EventType.SceneChangeStart>
     {
         protected override async ETTask Run(Scene scene, EventType.SceneChangeStart args)

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/Demo/UI/UILobby/LoginFinish_CreateLobbyUI.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-	[Event(SceneType.Client)]
+	[Event(SceneType.Demo)]
 	public class LoginFinish_CreateLobbyUI: AEvent<Scene, EventType.LoginFinish>
 	{
 		protected override async ETTask Run(Scene scene, EventType.LoginFinish args)

+ 2 - 2
Unity/Assets/Scripts/HotfixView/Client/Demo/UI/UILobby/UILobbyComponentSystem.cs

@@ -20,8 +20,8 @@ namespace ET.Client
         
         public static async ETTask EnterMap(this UILobbyComponent self)
         {
-            await EnterMapHelper.Match(self.ClientScene());
-            //await UIHelper.Remove(self.ClientScene(), UIType.UILobby);
+            await EnterMapHelper.EnterMapAsync(self.ClientScene());
+            await UIHelper.Remove(self.ClientScene(), UIType.UILobby);
         }
     }
 }

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/Demo/UI/UILogin/AppStartInitFinish_CreateLoginUI.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-	[Event(SceneType.Client)]
+	[Event(SceneType.Demo)]
 	public class AppStartInitFinish_CreateLoginUI: AEvent<Scene, EventType.AppStartInitFinish>
 	{
 		protected override async ETTask Run(Scene scene, EventType.AppStartInitFinish args)

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/Demo/UI/UILogin/LoginFinish_RemoveLoginUI.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-	[Event(SceneType.Client)]
+	[Event(SceneType.Demo)]
 	public class LoginFinish_RemoveLoginUI: AEvent<Scene, EventType.LoginFinish>
 	{
 		protected override async ETTask Run(Scene scene, EventType.LoginFinish args)

+ 4 - 4
Unity/Assets/Scripts/HotfixView/Client/LockStep/AnimatorComponentSystem.cs → Unity/Assets/Scripts/HotfixView/Client/Demo/Unit/AnimatorComponentSystem.cs

@@ -7,7 +7,7 @@ namespace ET.Client
 	public static class AnimatorComponentSystem
 	{
 		[ObjectSystem]
-		public class AnimatorComponentAwakeSystem : AwakeSystem<AnimatorComponent>
+		public class AwakeSystem : AwakeSystem<AnimatorComponent>
 		{
 			protected override void Awake(AnimatorComponent self)
 			{
@@ -16,7 +16,7 @@ namespace ET.Client
 		}
 
 		[ObjectSystem]
-		public class AnimatorComponentUpdateSystem : UpdateSystem<AnimatorComponent>
+		public class UpdateSystem : UpdateSystem<AnimatorComponent>
 		{
 			protected override void Update(AnimatorComponent self)
 			{
@@ -25,7 +25,7 @@ namespace ET.Client
 		}
 	
 		[ObjectSystem]
-		public class AnimatorComponentDestroySystem : DestroySystem<AnimatorComponent>
+		public class DestroySystem : DestroySystem<AnimatorComponent>
 		{
 			protected override void Destroy(AnimatorComponent self)
 			{
@@ -37,7 +37,7 @@ namespace ET.Client
 
 		private static void Awake(this AnimatorComponent self)
 		{
-			Animator animator = self.GetParent<LSUnitView>().GameObject.GetComponent<Animator>();
+			Animator animator = self.GetParent<Unit>().GetComponent<GameObjectComponent>().GameObject.GetComponent<Animator>();
 
 			if (animator == null)
 			{

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/LockStep/AnimatorComponentSystem.cs.meta → Unity/Assets/Scripts/HotfixView/Client/Demo/Unit/AnimatorComponentSystem.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: b87d9fe96e5e24dc1a3b26a0333b2851
+guid: 4dbc691573db50443914c3ea71ebdedf
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 220 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/LSAnimatorComponentSystem.cs

@@ -0,0 +1,220 @@
+using System;
+using UnityEngine;
+
+namespace ET.Client
+{
+	[FriendOf(typeof(LSAnimatorComponent))]
+	public static class LSAnimatorComponentSystem
+	{
+		[ObjectSystem]
+		public class AwakeSystem : AwakeSystem<LSAnimatorComponent>
+		{
+			protected override void Awake(LSAnimatorComponent self)
+			{
+				self.Awake();
+			}
+		}
+
+		[ObjectSystem]
+		public class UpdateSystem : UpdateSystem<LSAnimatorComponent>
+		{
+			protected override void Update(LSAnimatorComponent self)
+			{
+				self.Update();
+			}
+		}
+	
+		[ObjectSystem]
+		public class DestroySystem : DestroySystem<LSAnimatorComponent>
+		{
+			protected override void Destroy(LSAnimatorComponent self)
+			{
+				self.animationClips = null;
+				self.Parameter = null;
+				self.Animator = null;
+			}
+		}
+
+		private static void Awake(this LSAnimatorComponent self)
+		{
+			Animator animator = self.GetParent<LSUnitView>().GameObject.GetComponent<Animator>();
+
+			if (animator == null)
+			{
+				return;
+			}
+
+			if (animator.runtimeAnimatorController == null)
+			{
+				return;
+			}
+
+			if (animator.runtimeAnimatorController.animationClips == null)
+			{
+				return;
+			}
+			self.Animator = animator;
+			foreach (AnimationClip animationClip in animator.runtimeAnimatorController.animationClips)
+			{
+				self.animationClips[animationClip.name] = animationClip;
+			}
+			foreach (AnimatorControllerParameter animatorControllerParameter in animator.parameters)
+			{
+				self.Parameter.Add(animatorControllerParameter.name);
+			}
+		}
+
+		private static void Update(this LSAnimatorComponent self)
+		{
+			if (self.isStop)
+			{
+				return;
+			}
+
+			if (self.MotionType == MotionType.None)
+			{
+				return;
+			}
+
+			try
+			{
+				self.Animator.SetFloat("MotionSpeed", self.MontionSpeed);
+
+				self.Animator.SetTrigger(self.MotionType.ToString());
+
+				self.MontionSpeed = 1;
+				self.MotionType = MotionType.None;
+			}
+			catch (Exception ex)
+			{
+				throw new Exception($"动作播放失败: {self.MotionType}", ex);
+			}
+		}
+
+		public static bool HasParameter(this LSAnimatorComponent self, string parameter)
+		{
+			return self.Parameter.Contains(parameter);
+		}
+
+		public static void PlayInTime(this LSAnimatorComponent self, MotionType motionType, float time)
+		{
+			AnimationClip animationClip;
+			if (!self.animationClips.TryGetValue(motionType.ToString(), out animationClip))
+			{
+				throw new Exception($"找不到该动作: {motionType}");
+			}
+
+			float motionSpeed = animationClip.length / time;
+			if (motionSpeed < 0.01f || motionSpeed > 1000f)
+			{
+				Log.Error($"motionSpeed数值异常, {motionSpeed}, 此动作跳过");
+				return;
+			}
+			self.MotionType = motionType;
+			self.MontionSpeed = motionSpeed;
+		}
+
+		public static void Play(this LSAnimatorComponent self, MotionType motionType, float motionSpeed = 1f)
+		{
+			if (!self.HasParameter(motionType.ToString()))
+			{
+				return;
+			}
+			self.MotionType = motionType;
+			self.MontionSpeed = motionSpeed;
+		}
+
+		public static float AnimationTime(this LSAnimatorComponent self, MotionType motionType)
+		{
+			AnimationClip animationClip;
+			if (!self.animationClips.TryGetValue(motionType.ToString(), out animationClip))
+			{
+				throw new Exception($"找不到该动作: {motionType}");
+			}
+			return animationClip.length;
+		}
+
+		public static void PauseAnimator(this LSAnimatorComponent self)
+		{
+			if (self.isStop)
+			{
+				return;
+			}
+			self.isStop = true;
+
+			if (self.Animator == null)
+			{
+				return;
+			}
+			self.stopSpeed = self.Animator.speed;
+			self.Animator.speed = 0;
+		}
+
+		public static void RunAnimator(this LSAnimatorComponent self)
+		{
+			if (!self.isStop)
+			{
+				return;
+			}
+
+			self.isStop = false;
+
+			if (self.Animator == null)
+			{
+				return;
+			}
+			self.Animator.speed = self.stopSpeed;
+		}
+
+		public static void SetBoolValue(this LSAnimatorComponent self, string name, bool state)
+		{
+			if (!self.HasParameter(name))
+			{
+				return;
+			}
+
+			self.Animator.SetBool(name, state);
+		}
+
+		public static void SetFloatValue(this LSAnimatorComponent self, string name, float state)
+		{
+			if (!self.HasParameter(name))
+			{
+				return;
+			}
+
+			self.Animator.SetFloat(name, state);
+		}
+
+		public static void SetIntValue(this LSAnimatorComponent self, string name, int value)
+		{
+			if (!self.HasParameter(name))
+			{
+				return;
+			}
+
+			self.Animator.SetInteger(name, value);
+		}
+
+		public static void SetTrigger(this LSAnimatorComponent self, string name)
+		{
+			if (!self.HasParameter(name))
+			{
+				return;
+			}
+
+			self.Animator.SetTrigger(name);
+		}
+
+		public static void SetAnimatorSpeed(this LSAnimatorComponent self, float speed)
+		{
+			self.stopSpeed = self.Animator.speed;
+			self.Animator.speed = speed;
+		}
+
+		public static void ResetAnimatorSpeed(this LSAnimatorComponent self)
+		{
+			self.Animator.speed = self.stopSpeed;
+		}
+	}
+}

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/LSAnimatorComponentSystem.cs.meta

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

+ 2 - 2
Unity/Assets/Scripts/HotfixView/Client/LockStep/LSUnitViewSystem.cs

@@ -42,11 +42,11 @@ namespace ET.Client
             LSInput input = unit.GetComponent<LSInputComponent>().LSInput;
             if (input.V != TSVector2.zero)
             {
-                self.GetComponent<AnimatorComponent>().SetFloatValue("Speed", speed);
+                self.GetComponent<LSAnimatorComponent>().SetFloatValue("Speed", speed);
             }
             else
             {
-                self.GetComponent<AnimatorComponent>().SetFloatValue("Speed", 0);
+                self.GetComponent<LSAnimatorComponent>().SetFloatValue("Speed", 0);
             }
 
             self.t += Time.deltaTime;

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/LockStep/LockStepAfterUnitCreate_CreateUnitFView.cs

@@ -23,7 +23,7 @@ namespace ET.Client
             go.transform.position = args.LsUnit.Position.ToVector();
 
             LSUnitView lsUnitView = lsUnitViewComponent.AddChildWithId<LSUnitView, GameObject>(args.LsUnit.Id, go);
-            lsUnitView.AddComponent<AnimatorComponent>();
+            lsUnitView.AddComponent<LSAnimatorComponent>();
 
             await ETTask.CompletedTask;
         }

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/LockStep/LockStepSceneChangeStart_AddComponent.cs

@@ -2,7 +2,7 @@ using UnityEngine.SceneManagement;
 
 namespace ET.Client
 {
-    [Event(SceneType.Client)]
+    [Event(SceneType.LockStep)]
     public class LockStepSceneChangeStart_AddComponent: AEvent<Scene, EventType.LockStepSceneChangeStart>
     {
         protected override async ETTask Run(Scene clientScene, EventType.LockStepSceneChangeStart args)

+ 1 - 1
Unity/Assets/Scripts/HotfixView/Client/LockStep/LockStepSceneInitFinish_Finish.cs

@@ -1,6 +1,6 @@
 namespace ET.Client
 {
-    [Event(SceneType.Client)]
+    [Event(SceneType.LockStep)]
     public class LockStepSceneInitFinish_Finish: AEvent<Scene, EventType.LockStepSceneInitFinish>
     {
         protected override async ETTask Run(Scene clientScene, EventType.LockStepSceneInitFinish args)

+ 8 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/Scene.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 40255a3d69a90469586e24c2d6dd4d70
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 14 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/Scene/AfterCreateClientScene_LSAddComponent.cs

@@ -0,0 +1,14 @@
+namespace ET.Client
+{
+    [Event(SceneType.LockStep)]
+    public class AfterCreateClientScene_LSAddComponent: AEvent<Scene, EventType.AfterCreateClientScene>
+    {
+        protected override async ETTask Run(Scene scene, EventType.AfterCreateClientScene args)
+        {
+            scene.AddComponent<UIEventComponent>();
+            scene.AddComponent<UIComponent>();
+            scene.AddComponent<ResourcesLoaderComponent>();
+            await ETTask.CompletedTask;
+        }
+    }
+}

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/Scene/AfterCreateClientScene_LSAddComponent.cs.meta

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

+ 8 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 18eaa9b409bad4f9b82e1bbb0811c9fc
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 801ad2cb82cd34293864249725f3efca
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/LoginFinish_CreateUILSLobby.cs

@@ -0,0 +1,11 @@
+namespace ET.Client
+{
+	[Event(SceneType.LockStep)]
+	public class LoginFinish_CreateUILSLobby: AEvent<Scene, EventType.LoginFinish>
+	{
+		protected override async ETTask Run(Scene scene, EventType.LoginFinish args)
+		{
+			await UIHelper.Create(scene, UIType.UILSLobby, UILayer.Mid);
+		}
+	}
+}

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/LoginFinish_CreateUILSLobby.cs.meta

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

+ 27 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/UILSLobbyComponentSystem.cs

@@ -0,0 +1,27 @@
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace ET.Client
+{
+    [FriendOf(typeof(UILSLobbyComponent))]
+    public static class UILSLobbyComponentSystem
+    {
+        [ObjectSystem]
+        public class UILSLobbyComponentAwakeSystem: AwakeSystem<UILSLobbyComponent>
+        {
+            protected override void Awake(UILSLobbyComponent self)
+            {
+                ReferenceCollector rc = self.GetParent<UI>().GameObject.GetComponent<ReferenceCollector>();
+
+                self.enterMap = rc.Get<GameObject>("EnterMap");
+                self.enterMap.GetComponent<Button>().onClick.AddListener(() => { self.EnterMap().Coroutine(); });
+            }
+        }
+        
+        public static async ETTask EnterMap(this UILSLobbyComponent self)
+        {
+            await EnterMapHelper.Match(self.ClientScene());
+            await UIHelper.Remove(self.ClientScene(), UIType.UILSLobby);
+        }
+    }
+}

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/UILSLobbyComponentSystem.cs.meta

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

+ 25 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/UILSLobbyEvent.cs

@@ -0,0 +1,25 @@
+using UnityEngine;
+
+namespace ET.Client
+{
+    [UIEvent(UIType.UILSLobby)]
+    public class UILSLobbyEvent: AUIEvent
+    {
+        public override async ETTask<UI> OnCreate(UIComponent uiComponent, UILayer uiLayer)
+        {
+            await ETTask.CompletedTask;
+            await uiComponent.DomainScene().GetComponent<ResourcesLoaderComponent>().LoadAsync(UIType.UILSLobby.StringToAB());
+            GameObject bundleGameObject = (GameObject) ResourcesComponent.Instance.GetAsset(UIType.UILSLobby.StringToAB(), UIType.UILSLobby);
+            GameObject gameObject = UnityEngine.Object.Instantiate(bundleGameObject, UIEventComponent.Instance.GetLayer((int)uiLayer));
+            UI ui = uiComponent.AddChild<UI, string, GameObject>(UIType.UILSLobby, gameObject);
+
+            ui.AddComponent<UILSLobbyComponent>();
+            return ui;
+        }
+
+        public override void OnRemove(UIComponent uiComponent)
+        {
+            ResourcesComponent.Instance.UnloadBundle(UIType.UILSLobby.StringToAB());
+        }
+    }
+}

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLobby/UILSLobbyEvent.cs.meta

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

+ 8 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 10386ffef0f574a478ff5ea8a172f6ec
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/AppStartInitFinish_CreateUILSLogin.cs

@@ -0,0 +1,11 @@
+namespace ET.Client
+{
+	[Event(SceneType.LockStep)]
+	public class AppStartInitFinish_CreateUILSLogin: AEvent<Scene, EventType.AppStartInitFinish>
+	{
+		protected override async ETTask Run(Scene scene, EventType.AppStartInitFinish args)
+		{
+			await UIHelper.Create(scene, UIType.UILSLogin, UILayer.Mid);
+		}
+	}
+}

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/AppStartInitFinish_CreateUILSLogin.cs.meta

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

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/LoginFinish_RemoveLoginUI.cs

@@ -0,0 +1,11 @@
+namespace ET.Client
+{
+	[Event(SceneType.LockStep)]
+	public class LoginFinish_RemoveUILSLogin: AEvent<Scene, EventType.LoginFinish>
+	{
+		protected override async ETTask Run(Scene scene, EventType.LoginFinish args)
+		{
+			await UIHelper.Remove(scene, UIType.UILSLogin);
+		}
+	}
+}

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/LoginFinish_RemoveLoginUI.cs.meta

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

+ 24 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/UILSLoginEvent.cs

@@ -0,0 +1,24 @@
+using System;
+using UnityEngine;
+
+namespace ET.Client
+{
+    [UIEvent(UIType.UILSLogin)]
+    public class UILSLoginEvent: AUIEvent
+    {
+        public override async ETTask<UI> OnCreate(UIComponent uiComponent, UILayer uiLayer)
+        {
+            await uiComponent.DomainScene().GetComponent<ResourcesLoaderComponent>().LoadAsync(UIType.UILSLogin.StringToAB());
+            GameObject bundleGameObject = (GameObject) ResourcesComponent.Instance.GetAsset(UIType.UILSLogin.StringToAB(), UIType.UILSLogin);
+            GameObject gameObject = UnityEngine.Object.Instantiate(bundleGameObject, UIEventComponent.Instance.GetLayer((int)uiLayer));
+            UI ui = uiComponent.AddChild<UI, string, GameObject>(UIType.UILSLogin, gameObject);
+            ui.AddComponent<UILSLoginComponent>();
+            return ui;
+        }
+
+        public override void OnRemove(UIComponent uiComponent)
+        {
+            ResourcesComponent.Instance.UnloadBundle(UIType.UILSLogin.StringToAB());
+        }
+    }
+}

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/UILSLoginEvent.cs.meta

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

+ 32 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/UILoginComponentSystem.cs

@@ -0,0 +1,32 @@
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace ET.Client
+{
+	[FriendOf(typeof(UILoginComponent))]
+	public static class UILSLoginComponentSystem
+	{
+		[ObjectSystem]
+		public class UILSLoginComponentAwakeSystem : AwakeSystem<UILSLoginComponent>
+		{
+			protected override void Awake(UILSLoginComponent self)
+			{
+				ReferenceCollector rc = self.GetParent<UI>().GameObject.GetComponent<ReferenceCollector>();
+				self.loginBtn = rc.Get<GameObject>("LoginBtn");
+				
+				self.loginBtn.GetComponent<Button>().onClick.AddListener(()=> { self.OnLogin(); });
+				self.account = rc.Get<GameObject>("Account");
+				self.password = rc.Get<GameObject>("Password");
+			}
+		}
+
+		
+		public static void OnLogin(this UILSLoginComponent self)
+		{
+			LoginHelper.Login(
+				self.DomainScene(), 
+				self.account.GetComponent<InputField>().text, 
+				self.password.GetComponent<InputField>().text).Coroutine();
+		}
+	}
+}

+ 11 - 0
Unity/Assets/Scripts/HotfixView/Client/LockStep/UI/UILSLogin/UILoginComponentSystem.cs.meta

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

+ 21 - 0
Unity/Assets/Scripts/Loader/GlobalComponent.cs

@@ -0,0 +1,21 @@
+using UnityEngine;
+
+namespace ET
+{
+    public class GlobalComponent: Singleton<GlobalComponent>, ISingletonAwake
+    {
+        public Transform Global;
+        public Transform Unit { get; set; }
+        public Transform UI;
+
+        public GlobalConfig GlobalConfig { get; set; }
+        
+        public void Awake()
+        {
+            this.Global = GameObject.Find("/Global").transform;
+            this.Unit = GameObject.Find("/Global/Unit").transform;
+            this.UI = GameObject.Find("/Global/UI").transform;
+            this.GlobalConfig = Resources.Load<GlobalConfig>("GlobalConfig");
+        }
+    }
+}

+ 1 - 1
Unity/Assets/Scripts/ModelView/Client/Demo/Global/GlobalComponent.cs.meta → Unity/Assets/Scripts/Loader/GlobalComponent.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: f10134fceb1d49345bfe501d0b34e8f8
+guid: 7edb5672af78b4d149045c99a89a496e
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

Some files were not shown because too many files changed in this diff