Kaynağa Gözat

整理了客户端代码,以方便做ilruntime兼容

tanghai 8 yıl önce
ebeveyn
işleme
bd95de1e43
100 değiştirilmiş dosya ile 1600 ekleme ve 2122 silme
  1. 6 6
      Server/Hotfix/Handler/C2R_LoginHandler.cs
  2. 0 1174
      Unity/Assets/Bundles/UI/Lobby.prefab
  3. 0 8
      Unity/Assets/Bundles/UI/Lobby.prefab.meta
  4. 865 0
      Unity/Assets/Bundles/UI/UILogin.prefab
  5. 9 0
      Unity/Assets/Bundles/UI/UILogin.prefab.meta
  6. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeAfterChangeNodeTypeEvent_SelectNode.cs
  7. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeClickNodeEvent_SelectNode.cs
  8. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeConnectStateEvent_HandleConnectLines.cs
  9. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeCreateNodeEvent_SelectNode.cs
  10. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeMouseInNodeEvent_HandleOperate.cs
  11. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeNewCreateClickEvent_CreateNode.cs
  12. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeOpenEditorEvent_SelectNode.cs
  13. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeOpenEditorEvent_UpdatePropList.cs
  14. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeReplaceClickEvent_ReplaceNode.cs
  15. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeRightDesignerDragEvent_ModifyRightBorder.cs
  16. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeRunTreeEvent_ShowDebugInfo.cs
  17. BIN
      Unity/Assets/Res/Code/Hotfix.dll.bytes
  18. BIN
      Unity/Assets/Res/Code/Hotfix.mdb.bytes
  19. 8 0
      Unity/Assets/Res/Code/Hotfix.mdb.bytes.meta
  20. BIN
      Unity/Assets/Res/Code/Hotfix.pdb.bytes
  21. 4 6
      Unity/Assets/Resources/Code.prefab
  22. 0 54
      Unity/Assets/Resources/Config.prefab
  23. 0 8
      Unity/Assets/Resources/Config.prefab.meta
  24. 16 1
      Unity/Assets/Scenes/Init.unity
  25. 13 13
      Unity/Assets/Scripts/Base/Event/EventIdType.cs
  26. 48 0
      Unity/Assets/Scripts/Base/IL/ILRedirection.cs
  27. 25 25
      Unity/Assets/Scripts/Base/Object/EntityEventId.cs
  28. 7 0
      Unity/Assets/Scripts/Base/Object/IStart.cs
  29. 3 0
      Unity/Assets/Scripts/Base/Object/IStart.cs.meta
  30. 59 5
      Unity/Assets/Scripts/Base/Object/ObjectEvents.cs
  31. 3 0
      Unity/Assets/Scripts/Base/UI.meta
  32. 1 1
      Unity/Assets/Scripts/Base/UI/LayerNames.cs
  33. 3 0
      Unity/Assets/Scripts/Base/UI/LayerNames.cs.meta
  34. 1 1
      Unity/Assets/Scripts/Base/UI/UIFactoryAttribute.cs
  35. 3 0
      Unity/Assets/Scripts/Base/UI/UIFactoryAttribute.cs.meta
  36. 8 0
      Unity/Assets/Scripts/Base/UI/UIType.cs
  37. 3 0
      Unity/Assets/Scripts/Base/UI/UIType.cs.meta
  38. 1 1
      Unity/Assets/Scripts/Component/BehaviorTreeComponent.cs
  39. 1 1
      Unity/Assets/Scripts/Component/CrossComponent.cs
  40. 14 11
      Unity/Assets/Scripts/Component/EventComponent.cs
  41. 1 1
      Unity/Assets/Scripts/Component/MessageDispatherComponent.cs
  42. 1 1
      Unity/Assets/Scripts/Component/ResourcesComponent.cs
  43. 1 1
      Unity/Assets/Scripts/Component/TimerComponent.cs
  44. 3 0
      Unity/Assets/Scripts/Config.meta
  45. 9 0
      Unity/Assets/Scripts/Config/CanvasConfig.cs
  46. 3 0
      Unity/Assets/Scripts/Config/CanvasConfig.cs.meta
  47. 1 1
      Unity/Assets/Scripts/Entity/WWWAsync.cs
  48. 33 6
      Unity/Assets/Scripts/Helper/DllHelper.cs
  49. 0 0
      Unity/Assets/Scripts/Helper/DllHelper.cs.meta
  50. 56 0
      Unity/Assets/Scripts/Helper/ILHelper.cs
  51. 3 0
      Unity/Assets/Scripts/Helper/ILHelper.cs.meta
  52. 0 14
      Unity/Assets/Scripts/IInstanceMethod.cs
  53. 0 56
      Unity/Assets/Scripts/ILMethod.cs
  54. 52 70
      Unity/Assets/Scripts/Init.cs
  55. 0 39
      Unity/Assets/Scripts/MonoMethod.cs
  56. 3 0
      Unity/Assets/Scripts/Other.meta
  57. 0 0
      Unity/Assets/Scripts/Other/Define.cs
  58. 0 0
      Unity/Assets/Scripts/Other/Define.cs.meta
  59. 18 0
      Unity/Assets/Scripts/Other/IInstanceMethod.cs
  60. 0 0
      Unity/Assets/Scripts/Other/IInstanceMethod.cs.meta
  61. 89 0
      Unity/Assets/Scripts/Other/ILMethod.cs
  62. 0 0
      Unity/Assets/Scripts/Other/ILMethod.cs.meta
  63. 83 0
      Unity/Assets/Scripts/Other/MonoMethod.cs
  64. 0 0
      Unity/Assets/Scripts/Other/MonoMethod.cs.meta
  65. 0 0
      Unity/Assets/Scripts/Other/ReferenceCollector.cs
  66. 0 0
      Unity/Assets/Scripts/Other/ReferenceCollector.cs.meta
  67. 0 25
      Unity/Hotfix/AssetBundleHelper.cs
  68. 0 15
      Unity/Hotfix/Base/Event/AEventAttribute.cs
  69. 0 12
      Unity/Hotfix/Base/Event/AEventAttribute.cs.meta
  70. 0 89
      Unity/Hotfix/Base/Event/Env.cs
  71. 0 12
      Unity/Hotfix/Base/Event/Env.cs.meta
  72. 0 10
      Unity/Hotfix/Base/Event/EnvKey.cs
  73. 0 12
      Unity/Hotfix/Base/Event/EnvKey.cs.meta
  74. 0 9
      Unity/Hotfix/Base/Event/EventAttribute.cs
  75. 0 12
      Unity/Hotfix/Base/Event/EventAttribute.cs.meta
  76. 0 18
      Unity/Hotfix/Base/Event/EventIdType.cs
  77. 0 12
      Unity/Hotfix/Base/Event/EventIdType.cs.meta
  78. 0 12
      Unity/Hotfix/Base/Event/IEvent.cs.meta
  79. 1 1
      Unity/Hotfix/Base/Message/AMHandler.cs
  80. 0 27
      Unity/Hotfix/Base/Message/AMessage.cs
  81. 6 3
      Unity/Hotfix/Base/Object/Entity.cs
  82. 0 15
      Unity/Hotfix/Base/Object/ObjectEventAttribute.cs
  83. 3 0
      Unity/Hotfix/Base/Object/ObjectEvents.cs
  84. 0 30
      Unity/Hotfix/Base/Other/EntityEventId.cs
  85. 5 2
      Unity/Hotfix/Base/Other/IUIFactory.cs
  86. 0 8
      Unity/Hotfix/Base/Other/UIType.cs
  87. 0 85
      Unity/Hotfix/Component/ConfigComponent.cs
  88. 22 19
      Unity/Hotfix/Component/EventComponent.cs
  89. 3 2
      Unity/Hotfix/Component/GameObjectComponent.cs
  90. 2 1
      Unity/Hotfix/Component/KVComponent.cs
  91. 7 6
      Unity/Hotfix/Component/MessageDispatherComponent.cs
  92. 4 2
      Unity/Hotfix/Component/RobotComponent.cs
  93. 6 4
      Unity/Hotfix/Component/TimerComponent.cs
  94. 66 33
      Unity/Hotfix/Component/UIComponent.cs
  95. 0 40
      Unity/Hotfix/Component/UnitComponent.cs
  96. 3 2
      Unity/Hotfix/Entity/UI.cs
  97. 0 41
      Unity/Hotfix/HotfixEntry.cs
  98. 4 5
      Unity/Hotfix/Init.cs
  99. 0 21
      Unity/Hotfix/UI/UILobby/Factory/UILobbyFactory.cs
  100. 0 22
      Unity/Hotfix/UI/UILobby/Factory/UILoginFactory.cs

+ 6 - 6
Server/Hotfix/Handler/C2R_LoginHandler.cs

@@ -11,12 +11,12 @@ namespace Hotfix
 			R2C_Login response = new R2C_Login();
 			try
 			{
-				if (message.Account != "abcdef" || message.Password != "111111")
-				{
-					response.Error = ErrorCode.ERR_AccountOrPasswordError;
-					reply(response);
-					return;
-				}
+				//if (message.Account != "abcdef" || message.Password != "111111")
+				//{
+				//	response.Error = ErrorCode.ERR_AccountOrPasswordError;
+				//	reply(response);
+				//	return;
+				//}
 
 				// 随机分配一个Gate
 				StartConfig config = Game.Scene.GetComponent<RealmGateAddressComponent>().GetAddress();

+ 0 - 1174
Unity/Assets/Bundles/UI/Lobby.prefab

@@ -1,1174 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!1001 &100100000
-Prefab:
-  m_ObjectHideFlags: 1
-  serializedVersion: 2
-  m_Modification:
-    m_TransformParent: {fileID: 0}
-    m_Modifications: []
-    m_RemovedComponents: []
-  m_ParentPrefab: {fileID: 0}
-  m_RootGameObject: {fileID: 1000012140906046}
-  m_IsPrefabParent: 1
---- !u!1 &1000010279990180
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000013306138686}
-  - 222: {fileID: 222000011260852292}
-  - 114: {fileID: 114000010075827648}
-  m_Layer: 5
-  m_Name: Return
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000010282139360
-GameObject:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000014261888288}
-  - 222: {fileID: 222000013767965188}
-  - 114: {fileID: 114000013938780624}
-  - 114: {fileID: 114000011352581290}
-  m_Layer: 5
-  m_Name: JoinRoom
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000010654722068
-GameObject:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000013995298894}
-  - 222: {fileID: 222000012286557312}
-  - 114: {fileID: 114000010390865150}
-  - 114: {fileID: 114000012431845190}
-  m_Layer: 5
-  m_Name: CreateRoom
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000010768706392
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000011127377422}
-  - 222: {fileID: 222000013477738492}
-  - 114: {fileID: 114000010018025894}
-  m_Layer: 5
-  m_Name: NameText
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000011046193616
-GameObject:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000014161230184}
-  m_Layer: 5
-  m_Name: Top
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000011264437648
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000010483783062}
-  - 222: {fileID: 222000013340801768}
-  - 114: {fileID: 114000012146228554}
-  m_Layer: 5
-  m_Name: NameBackground
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000011265503640
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000012493826100}
-  - 222: {fileID: 222000011891353488}
-  - 114: {fileID: 114000013049634718}
-  m_Layer: 5
-  m_Name: Gold
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000011463022836
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000012987451432}
-  - 222: {fileID: 222000014108952078}
-  - 114: {fileID: 114000013879378286}
-  m_Layer: 5
-  m_Name: Message
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000011988625458
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000013013133024}
-  - 222: {fileID: 222000010502849886}
-  - 114: {fileID: 114000010861932684}
-  m_Layer: 5
-  m_Name: More
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000012140906046
-GameObject:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000011433140006}
-  - 222: {fileID: 222000012393644854}
-  - 114: {fileID: 114000012430220302}
-  - 114: {fileID: 114000011231987512}
-  - 114: {fileID: 114000010131133460}
-  m_Layer: 5
-  m_Name: Lobby
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000012273643160
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000012832612498}
-  - 222: {fileID: 222000012472650716}
-  - 114: {fileID: 114000014225496034}
-  m_Layer: 5
-  m_Name: Kefu
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000013234089386
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000011685909774}
-  - 222: {fileID: 222000011206635248}
-  - 114: {fileID: 114000010640523976}
-  m_Layer: 5
-  m_Name: TouXiang
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000013273220736
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000010797904966}
-  - 222: {fileID: 222000010352788246}
-  - 114: {fileID: 114000010748204300}
-  - 114: {fileID: 114000012242520322}
-  m_Layer: 5
-  m_Name: ChongZhi
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000013579230402
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000012180277534}
-  - 222: {fileID: 222000011102980374}
-  - 114: {fileID: 114000012921558084}
-  m_Layer: 5
-  m_Name: BaoShi
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!1 &1000014196117232
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 224: {fileID: 224000012899174416}
-  - 222: {fileID: 222000012435440532}
-  - 114: {fileID: 114000013580934710}
-  m_Layer: 5
-  m_Name: Setting
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!114 &114000010018025894
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010768706392}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_FontData:
-    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
-    m_FontSize: 14
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 10
-    m_MaxSize: 40
-    m_Alignment: 4
-    m_AlignByGeometry: 0
-    m_RichText: 1
-    m_HorizontalOverflow: 0
-    m_VerticalOverflow: 0
-    m_LineSpacing: 1
-  m_Text: New Text
---- !u!114 &114000010075827648
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010279990180}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: bcf5a192069e38542b8c1cd35b1fe323, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000010131133460
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012140906046}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 92184f0259e287441a0abea0928c2057, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  CreateBT: {fileID: 1000012987241756, guid: 5dfe2c32bf2efc044a7f3f57c34ab334, type: 2}
---- !u!114 &114000010390865150
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010654722068}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: dcf85c2c02c070840ad89c01ff585fee, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000010640523976
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013234089386}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: 947920d233348974a8cd50a4b8d8ddbb, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000010748204300
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013273220736}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: 4ad538720a369ac42af17ac58ff8fc8f, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000010861932684
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011988625458}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: ab5ce638ab9b84d40a60c476e4307323, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000011231987512
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012140906046}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 502d8cafd6a5a0447ab1db9a24cdcb10, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  data:
-  - key: CreateRoom
-    gameObject: {fileID: 1000010654722068}
-  - key: JoinRoom
-    gameObject: {fileID: 1000010282139360}
---- !u!114 &114000011352581290
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010282139360}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Navigation:
-    m_Mode: 3
-    m_SelectOnUp: {fileID: 0}
-    m_SelectOnDown: {fileID: 0}
-    m_SelectOnLeft: {fileID: 0}
-    m_SelectOnRight: {fileID: 0}
-  m_Transition: 1
-  m_Colors:
-    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
-    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
-    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
-    m_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_DisabledSprite: {fileID: 0}
-  m_AnimationTriggers:
-    m_NormalTrigger: Normal
-    m_HighlightedTrigger: Highlighted
-    m_PressedTrigger: Pressed
-    m_DisabledTrigger: Disabled
-  m_Interactable: 1
-  m_TargetGraphic: {fileID: 114000013938780624}
-  m_OnClick:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
-      Culture=neutral, PublicKeyToken=null
---- !u!114 &114000012146228554
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011264437648}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: b25933244996151439a4138f5ecd44a9, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000012242520322
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013273220736}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Navigation:
-    m_Mode: 3
-    m_SelectOnUp: {fileID: 0}
-    m_SelectOnDown: {fileID: 0}
-    m_SelectOnLeft: {fileID: 0}
-    m_SelectOnRight: {fileID: 0}
-  m_Transition: 1
-  m_Colors:
-    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
-    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
-    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
-    m_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_DisabledSprite: {fileID: 0}
-  m_AnimationTriggers:
-    m_NormalTrigger: Normal
-    m_HighlightedTrigger: Highlighted
-    m_PressedTrigger: Pressed
-    m_DisabledTrigger: Disabled
-  m_Interactable: 1
-  m_TargetGraphic: {fileID: 114000010748204300}
-  m_OnClick:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
-      Culture=neutral, PublicKeyToken=null
---- !u!114 &114000012430220302
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012140906046}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
-  m_RaycastTarget: 0
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: 310c3376e6a94304f9348de3e3591d4b, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000012431845190
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010654722068}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Navigation:
-    m_Mode: 3
-    m_SelectOnUp: {fileID: 0}
-    m_SelectOnDown: {fileID: 0}
-    m_SelectOnLeft: {fileID: 0}
-    m_SelectOnRight: {fileID: 0}
-  m_Transition: 1
-  m_Colors:
-    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
-    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
-    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
-    m_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_DisabledSprite: {fileID: 0}
-  m_AnimationTriggers:
-    m_NormalTrigger: Normal
-    m_HighlightedTrigger: Highlighted
-    m_PressedTrigger: Pressed
-    m_DisabledTrigger: Disabled
-  m_Interactable: 1
-  m_TargetGraphic: {fileID: 114000010390865150}
-  m_OnClick:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
-      Culture=neutral, PublicKeyToken=null
---- !u!114 &114000012921558084
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013579230402}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: 78f8e9d7ac314424a8d1472310240f59, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000013049634718
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011265503640}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: 771f3bcab43a15c41a5a932faf5e0845, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000013580934710
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000014196117232}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: fb93f0536483525498b6ff6dc25f6475, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000013879378286
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011463022836}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: 90684046d60017b4f8f46be35cab853a, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000013938780624
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010282139360}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: 09f10c2eecc124145bccba1947baeea1, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!114 &114000014225496034
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012273643160}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: d40bfa065c6fb4241950116f7efbe756, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
---- !u!222 &222000010352788246
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013273220736}
---- !u!222 &222000010502849886
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011988625458}
---- !u!222 &222000011102980374
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013579230402}
---- !u!222 &222000011206635248
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013234089386}
---- !u!222 &222000011260852292
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010279990180}
---- !u!222 &222000011891353488
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011265503640}
---- !u!222 &222000012286557312
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010654722068}
---- !u!222 &222000012393644854
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012140906046}
---- !u!222 &222000012435440532
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000014196117232}
---- !u!222 &222000012472650716
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012273643160}
---- !u!222 &222000013340801768
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011264437648}
---- !u!222 &222000013477738492
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010768706392}
---- !u!222 &222000013767965188
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010282139360}
---- !u!222 &222000014108952078
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011463022836}
---- !u!224 &224000010483783062
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011264437648}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 9.350306}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children:
-  - {fileID: 224000011127377422}
-  m_Father: {fileID: 224000014161230184}
-  m_RootOrder: 8
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -825, y: 383}
-  m_SizeDelta: {x: 122, y: 33}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000010797904966
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013273220736}
-  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: 0.9999999}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000012493826100}
-  m_RootOrder: 0
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0.795, y: 0.04}
-  m_SizeDelta: {x: 0.7, y: 0.32}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000011127377422
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010768706392}
-  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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000010483783062}
-  m_RootOrder: 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: 1.14, y: 0.31}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000011433140006
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012140906046}
-  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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children:
-  - {fileID: 224000013995298894}
-  - {fileID: 224000014261888288}
-  - {fileID: 224000014161230184}
-  m_Father: {fileID: 0}
-  m_RootOrder: 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!224 &224000011685909774
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013234089386}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 9.3503065}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000014161230184}
-  m_RootOrder: 3
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -824.99994, y: 467}
-  m_SizeDelta: {x: 76, y: 76}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000012180277534
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000013579230402}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 1}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000014161230184}
-  m_RootOrder: 7
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -164, y: 463}
-  m_SizeDelta: {x: 172, y: 48}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000012493826100
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011265503640}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 1}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children:
-  - {fileID: 224000010797904966}
-  m_Father: {fileID: 224000014161230184}
-  m_RootOrder: 6
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -555, y: 467}
-  m_SizeDelta: {x: 242, y: 48}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000012832612498
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012273643160}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 1}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000014161230184}
-  m_RootOrder: 2
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 506, y: 456}
-  m_SizeDelta: {x: 76, y: 71}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000012899174416
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000014196117232}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 1}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000014161230184}
-  m_RootOrder: 0
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 146, y: 455}
-  m_SizeDelta: {x: 76, y: 71}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000012987451432
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011463022836}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 1}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000014161230184}
-  m_RootOrder: 1
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 321.99997, y: 456}
-  m_SizeDelta: {x: 76, y: 71}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000013013133024
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011988625458}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 1}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000014161230184}
-  m_RootOrder: 4
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 684, y: 455}
-  m_SizeDelta: {x: 76, y: 71}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000013306138686
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010279990180}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 9.350306}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000014161230184}
-  m_RootOrder: 5
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 866, y: 459}
-  m_SizeDelta: {x: 76, y: 71}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000013995298894
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010654722068}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5, z: 1}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000011433140006}
-  m_RootOrder: 0
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -345, y: -7}
-  m_SizeDelta: {x: 289, y: 392}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000014161230184
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011046193616}
-  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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children:
-  - {fileID: 224000012899174416}
-  - {fileID: 224000012987451432}
-  - {fileID: 224000012832612498}
-  - {fileID: 224000011685909774}
-  - {fileID: 224000013013133024}
-  - {fileID: 224000013306138686}
-  - {fileID: 224000012493826100}
-  - {fileID: 224000012180277534}
-  - {fileID: 224000010483783062}
-  m_Father: {fileID: 224000011433140006}
-  m_RootOrder: 2
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 100, y: 100}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224000014261888288
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010282139360}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.5, y: 1.5000001, z: 1}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 224000011433140006}
-  m_RootOrder: 1
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 344, y: 0}
-  m_SizeDelta: {x: 289, y: 392}
-  m_Pivot: {x: 0.5, y: 0.5}

+ 0 - 8
Unity/Assets/Bundles/UI/Lobby.prefab.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: ff8cd026c365b524ca9429d49f88f14d
-timeCreated: 1487236049
-licenseType: Pro
-NativeFormatImporter:
-  userData: 
-  assetBundleName: uilobby.unity3d
-  assetBundleVariant: 

+ 865 - 0
Unity/Assets/Bundles/UI/UILogin.prefab

@@ -0,0 +1,865 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &100100000
+Prefab:
+  m_ObjectHideFlags: 1
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 0}
+    m_Modifications: []
+    m_RemovedComponents: []
+  m_ParentPrefab: {fileID: 0}
+  m_RootGameObject: {fileID: 1386170326414932}
+  m_IsPrefabParent: 1
+--- !u!1 &1023474203466346
+GameObject:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  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!1 &1291824300971018
+GameObject:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 224489797947042478}
+  - component: {fileID: 222930300238766398}
+  - component: {fileID: 114761152647636742}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!1 &1386170326414932
+GameObject:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 224438795553994780}
+  - component: {fileID: 222767206446386334}
+  - component: {fileID: 114768094896805158}
+  - component: {fileID: 114699130285514482}
+  - component: {fileID: 114850350457908736}
+  m_Layer: 5
+  m_Name: UILogin
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!1 &1531376669843916
+GameObject:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 224898347010869264}
+  - component: {fileID: 222026127576226558}
+  - component: {fileID: 114969748100432940}
+  m_Layer: 5
+  m_Name: Placeholder
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!1 &1568484768885604
+GameObject:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  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!1 &1670632076201042
+GameObject:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  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!1 &1889707553944926
+GameObject:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 224326499099698408}
+  - component: {fileID: 222924007153509080}
+  - component: {fileID: 114633694004432610}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!1 &1910298475376026
+GameObject:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  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!1 &1920061237828514
+GameObject:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  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!114 &114107327146574444
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1568484768885604}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  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
+--- !u!114 &114341495829030012
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1670632076201042}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_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_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 114899069937167200}
+  m_TextComponent: {fileID: 114761152647636742}
+  m_Placeholder: {fileID: 114969748100432940}
+  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_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  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
+--- !u!114 &114630311973242952
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1920061237828514}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_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_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 114719520540637998}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+--- !u!114 &114633694004432610
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1889707553944926}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, 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_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  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"
+--- !u!114 &114663064108016614
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1568484768885604}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_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_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 114107327146574444}
+  m_TextComponent: {fileID: 114822005217712104}
+  m_Placeholder: {fileID: 114882975747376550}
+  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_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  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
+--- !u!114 &114699130285514482
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1386170326414932}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 8347f75bbf20473292de676504ad7398, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  CanvasName: LoginCanvas
+--- !u!114 &114719520540637998
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1920061237828514}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  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
+--- !u!114 &114761152647636742
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1291824300971018}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, 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_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  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!114 &114768094896805158
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1386170326414932}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 0.392}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  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
+--- !u!114 &114822005217712104
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1023474203466346}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, 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_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  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!114 &114850350457908736
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1386170326414932}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 502d8cafd6a5a0447ab1db9a24cdcb10, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  data:
+  - key: LoginBtn
+    gameObject: {fileID: 1920061237828514}
+  - key: Account
+    gameObject: {fileID: 1670632076201042}
+  - key: Password
+    gameObject: {fileID: 1568484768885604}
+--- !u!114 &114882975747376550
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1910298475376026}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, 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_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  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!114 &114899069937167200
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1670632076201042}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  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
+--- !u!114 &114969748100432940
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1531376669843916}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, 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_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  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!222 &222002149542603454
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1920061237828514}
+--- !u!222 &222026127576226558
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1531376669843916}
+--- !u!222 &222162039596540310
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1568484768885604}
+--- !u!222 &222413101418373256
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1023474203466346}
+--- !u!222 &222577866995156442
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1910298475376026}
+--- !u!222 &222749306122254412
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1670632076201042}
+--- !u!222 &222767206446386334
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1386170326414932}
+--- !u!222 &222924007153509080
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1889707553944926}
+--- !u!222 &222930300238766398
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1291824300971018}
+--- !u!224 &224073640819989714
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  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: 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!224 &224326499099698408
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1889707553944926}
+  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!224 &224438795553994780
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  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: 224922312697997914}
+  - {fileID: 224944102343361862}
+  - {fileID: 224532636050568724}
+  m_Father: {fileID: 0}
+  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!224 &224489797947042478
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1291824300971018}
+  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!224 &224532636050568724
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  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: 224326499099698408}
+  m_Father: {fileID: 224438795553994780}
+  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: -1, y: -33}
+  m_SizeDelta: {x: 263.5, y: 62.3}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!224 &224608071536574582
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  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: 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!224 &224898347010869264
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1531376669843916}
+  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!224 &224922312697997914
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  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: 224898347010869264}
+  - {fileID: 224489797947042478}
+  m_Father: {fileID: 224438795553994780}
+  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: -1.0001, y: 99}
+  m_SizeDelta: {x: 263.5, y: 43.4}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!224 &224944102343361862
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  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: 0.9999976, y: 0.9999976, z: 0.9999976}
+  m_Children:
+  - {fileID: 224608071536574582}
+  - {fileID: 224073640819989714}
+  m_Father: {fileID: 224438795553994780}
+  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: -1.0001, y: 38}
+  m_SizeDelta: {x: 263.5, y: 43.4}
+  m_Pivot: {x: 0.5, y: 0.5}

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

@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 9f6d9adc6f537764fa0fea29671e77bf
+timeCreated: 1504164637
+licenseType: Free
+NativeFormatImporter:
+  mainObjectFileID: 100100000
+  userData: 
+  assetBundleName: uilogin.unity3d
+  assetBundleVariant: 

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeAfterChangeNodeTypeEvent_SelectNode.cs

@@ -2,7 +2,7 @@
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeAfterChangeNodeType)]
+	[Event((int)EventIdType.BehaviorTreeAfterChangeNodeType)]
 	public class BehaviorTreeAfterChangeNodeTypeEvent_SelectNode: IEvent
 	{
 		public void Run()

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeClickNodeEvent_SelectNode.cs

@@ -2,7 +2,7 @@
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeClickNode)]
+	[Event((int)EventIdType.BehaviorTreeClickNode)]
 	public class BehaviorTreeClickNodeEvent_SelectNode: IEvent<NodeDesigner>
 	{
 		public void Run(NodeDesigner dstNode)

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeConnectStateEvent_HandleConnectLines.cs

@@ -2,7 +2,7 @@
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeConnectState)]
+	[Event((int)EventIdType.BehaviorTreeConnectState)]
 	public class BehaviorTreeConnectStateEvent_HandleConnectLines: IEvent<NodeDesigner, State>
 	{
 		public void Run(NodeDesigner nodeDesigner, State state)

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeCreateNodeEvent_SelectNode.cs

@@ -2,7 +2,7 @@
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeCreateNode)]
+	[Event((int)EventIdType.BehaviorTreeCreateNode)]
 	public class BehaviorTreeCreateNodeEvent_SelectNode: IEvent<NodeDesigner>
 	{
 		public void Run(NodeDesigner dstNode)

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeMouseInNodeEvent_HandleOperate.cs

@@ -2,7 +2,7 @@
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeMouseInNode)]
+	[Event((int)EventIdType.BehaviorTreeMouseInNode)]
 	public class BehaviorTreeMouseInNodeEvent_HandleOperate: IEvent<BehaviorNodeData, NodeDesigner>
 	{
 		public void Run(BehaviorNodeData nodeData, NodeDesigner nodeDesigner)

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeNewCreateClickEvent_CreateNode.cs

@@ -3,7 +3,7 @@ using UnityEngine;
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreePropertyDesignerNewCreateClick)]
+	[Event((int)EventIdType.BehaviorTreePropertyDesignerNewCreateClick)]
 	public class BehaviorTreeNewCreateClickEvent_CreateNode: IEvent<string, Vector2>
 	{
 		public void Run(string name, Vector2 pos)

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeOpenEditorEvent_SelectNode.cs

@@ -3,7 +3,7 @@ using UnityEngine;
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeOpenEditor)]
+	[Event((int)EventIdType.BehaviorTreeOpenEditor)]
 	public class BehaviorTreeOpenEditorEvent_SelectNode: IEvent
 	{
 		public void Run()

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeOpenEditorEvent_UpdatePropList.cs

@@ -2,7 +2,7 @@
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeOpenEditor)]
+	[Event((int)EventIdType.BehaviorTreeOpenEditor)]
 	public class BehaviorTreeOpenEditorEvent_UpdatePropList: IEvent
 	{
 		public void Run()

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeReplaceClickEvent_ReplaceNode.cs

@@ -3,7 +3,7 @@ using UnityEngine;
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeReplaceClick)]
+	[Event((int)EventIdType.BehaviorTreeReplaceClick)]
 	public class BehaviorTreeReplaceClickEvent_ReplaceNode: IEvent<string, Vector2>
 	{
 		public void Run(string name, Vector2 pos)

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeRightDesignerDragEvent_ModifyRightBorder.cs

@@ -2,7 +2,7 @@
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeRightDesignerDrag)]
+	[Event((int)EventIdType.BehaviorTreeRightDesignerDrag)]
 	public class BehaviorTreeRightDesignerDragEvent_ModifyRightBorder: IEvent<float>
 	{
 		public void Run(float deltaX)

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeRunTreeEvent_ShowDebugInfo.cs

@@ -3,7 +3,7 @@ using Model;
 
 namespace MyEditor
 {
-	[Event(EventIdType.BehaviorTreeRunTreeEvent)]
+	[Event((int)EventIdType.BehaviorTreeRunTreeEvent)]
 	public class BehaviorTreeRunTreeEvent_ShowDebugInfo: IEvent<BehaviorTree, List<long>>
 	{
 		public void Run(BehaviorTree tree, List<long> pathList)

BIN
Unity/Assets/Res/Code/Hotfix.dll.bytes


BIN
Unity/Assets/Res/Code/Hotfix.mdb.bytes


+ 8 - 0
Unity/Assets/Res/Code/Hotfix.mdb.bytes.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fc3c76c649ab2b648ba4a4492ef73703
+timeCreated: 1504145873
+licenseType: Free
+TextScriptImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Unity/Assets/Res/Code/Hotfix.pdb.bytes


+ 4 - 6
Unity/Assets/Resources/Code.prefab

@@ -5,10 +5,10 @@ GameObject:
   m_ObjectHideFlags: 0
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
+  serializedVersion: 5
   m_Component:
-  - 4: {fileID: 425028}
-  - 114: {fileID: 114000012985339954}
+  - component: {fileID: 425028}
+  - component: {fileID: 114000012985339954}
   m_Layer: 0
   m_Name: Code
   m_TagString: Untagged
@@ -25,10 +25,10 @@ Transform:
   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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_Children: []
   m_Father: {fileID: 0}
   m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &100100000
 Prefab:
   m_ObjectHideFlags: 1
@@ -56,5 +56,3 @@ MonoBehaviour:
     gameObject: {fileID: 4900000, guid: ae44b218243cfc347af99a6875e9e11c, type: 3}
   - key: Hotfix.pdb
     gameObject: {fileID: 4900000, guid: dd08ff64f788e7a4ba0f918632ff8d0f, type: 3}
-  - key: Hotfix.dll.mdb
-    gameObject: {fileID: 4900000, guid: 23e92275d463b2145ba2a28b5f1bb7dc, type: 3}

+ 0 - 54
Unity/Assets/Resources/Config.prefab

@@ -1,54 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!1 &184536
-GameObject:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 4
-  m_Component:
-  - 4: {fileID: 425028}
-  - 114: {fileID: 114000012016491872}
-  m_Layer: 0
-  m_Name: Config
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!4 &425028
-Transform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 184536}
-  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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_Children: []
-  m_Father: {fileID: 0}
-  m_RootOrder: 0
---- !u!1001 &100100000
-Prefab:
-  m_ObjectHideFlags: 1
-  serializedVersion: 2
-  m_Modification:
-    m_TransformParent: {fileID: 0}
-    m_Modifications: []
-    m_RemovedComponents: []
-  m_ParentPrefab: {fileID: 0}
-  m_RootGameObject: {fileID: 184536}
-  m_IsPrefabParent: 1
---- !u!114 &114000012016491872
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 184536}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 502d8cafd6a5a0447ab1db9a24cdcb10, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  data: []

+ 0 - 8
Unity/Assets/Resources/Config.prefab.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: f5aff6e47e6bc6f4ab8d7a79a41b9a74
-timeCreated: 1474946800
-licenseType: Pro
-NativeFormatImporter:
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 16 - 1
Unity/Assets/Scenes/Init.unity

@@ -326,6 +326,7 @@ GameObject:
   serializedVersion: 5
   m_Component:
   - component: {fileID: 1472883029}
+  - component: {fileID: 1472883030}
   m_Layer: 0
   m_Name: UI
   m_TagString: Untagged
@@ -347,6 +348,20 @@ Transform:
   m_Father: {fileID: 575235020}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1472883030
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 1472883028}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 502d8cafd6a5a0447ab1db9a24cdcb10, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  data:
+  - key: LoginCanvas
+    gameObject: {fileID: 1848209001}
 --- !u!1 &1518071806
 GameObject:
   m_ObjectHideFlags: 0
@@ -388,7 +403,7 @@ GameObject:
   - component: {fileID: 1848209004}
   - component: {fileID: 1848209003}
   m_Layer: 5
-  m_Name: UICanvas
+  m_Name: LoginCanvas
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0

+ 13 - 13
Unity/Assets/Scripts/Base/Event/EventIdType.cs

@@ -1,20 +1,20 @@
 namespace Model
 {
-	public static class EventIdType
+	public enum EventIdType
 	{
-		public const int InitSceneStart = 1;
+		InitSceneStart,
 
-		public const int BehaviorTreeRunTreeEvent = 2;
-		public const int BehaviorTreeOpenEditor = 3;
-		public const int BehaviorTreeClickNode = 4;
-		public const int BehaviorTreeAfterChangeNodeType = 5;
-		public const int BehaviorTreeCreateNode = 6;
-		public const int BehaviorTreePropertyDesignerNewCreateClick = 7;
-		public const int BehaviorTreeMouseInNode = 8;
-		public const int BehaviorTreeConnectState = 9;
-		public const int BehaviorTreeReplaceClick = 10;
-		public const int BehaviorTreeRightDesignerDrag = 11;
+		BehaviorTreeRunTreeEvent,
+		BehaviorTreeOpenEditor,
+		BehaviorTreeClickNode,
+		BehaviorTreeAfterChangeNodeType,
+		BehaviorTreeCreateNode,
+		BehaviorTreePropertyDesignerNewCreateClick,
+		BehaviorTreeMouseInNode,
+		BehaviorTreeConnectState,
+		BehaviorTreeReplaceClick,
+		BehaviorTreeRightDesignerDrag,
 
-		public const int SessionRecvMessage = 12;
+		SessionRecvMessage,
 	}
 }

+ 48 - 0
Unity/Assets/Scripts/Base/IL/ILRedirection.cs

@@ -31,5 +31,53 @@ namespace Model
 
 			return __ret;
 		}
+
+		public static unsafe StackObject* LogInfo(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
+		{
+			//ILRuntime的调用约定为被调用者清理堆栈,因此执行这个函数后需要将参数从堆栈清理干净,并把返回值放在栈顶,具体请看ILRuntime实现原理文档
+			ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
+			StackObject* ptr_of_this_method;
+			//这个是最后方法返回后esp栈指针的值,应该返回清理完参数并指向返回值,这里是只需要返回清理完参数的值即可
+			StackObject* __ret = ILIntepreter.Minus(__esp, 1);
+			//取Log方法的参数,如果有两个参数的话,第一个参数是esp - 2,第二个参数是esp -1, 因为Mono的bug,直接-2值会错误,所以要调用ILIntepreter.Minus
+			ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
+
+			//这里是将栈指针上的值转换成object,如果是基础类型可直接通过ptr->Value和ptr->ValueLow访问到值,具体请看ILRuntime实现原理文档
+			object message = typeof(object).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
+			//所有非基础类型都得调用Free来释放托管堆栈
+			__intp.Free(ptr_of_this_method);
+
+			//在真实调用Debug.Log前,我们先获取DLL内的堆栈
+			var stacktrace = __domain.DebugService.GetStackTrance(__intp);
+
+			//我们在输出信息后面加上DLL堆栈
+			Log.Info(message + "\n" + stacktrace);
+
+			return __ret;
+		}
+
+		public static unsafe StackObject* LogError(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
+		{
+			//ILRuntime的调用约定为被调用者清理堆栈,因此执行这个函数后需要将参数从堆栈清理干净,并把返回值放在栈顶,具体请看ILRuntime实现原理文档
+			ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
+			StackObject* ptr_of_this_method;
+			//这个是最后方法返回后esp栈指针的值,应该返回清理完参数并指向返回值,这里是只需要返回清理完参数的值即可
+			StackObject* __ret = ILIntepreter.Minus(__esp, 1);
+			//取Log方法的参数,如果有两个参数的话,第一个参数是esp - 2,第二个参数是esp -1, 因为Mono的bug,直接-2值会错误,所以要调用ILIntepreter.Minus
+			ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
+
+			//这里是将栈指针上的值转换成object,如果是基础类型可直接通过ptr->Value和ptr->ValueLow访问到值,具体请看ILRuntime实现原理文档
+			object message = typeof(object).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
+			//所有非基础类型都得调用Free来释放托管堆栈
+			__intp.Free(ptr_of_this_method);
+
+			//在真实调用Debug.Log前,我们先获取DLL内的堆栈
+			var stacktrace = __domain.DebugService.GetStackTrance(__intp);
+
+			//我们在输出信息后面加上DLL堆栈
+			Log.Error(message + "\n" + stacktrace);
+
+			return __ret;
+		}
 	}
 }

+ 25 - 25
Unity/Assets/Scripts/Base/Object/EntityEventId.cs

@@ -1,31 +1,31 @@
 namespace Model
 {
-	public static class EntityEventId
+	public enum EntityEventId
 	{
-		public const int TimerComponent = 1;
-		public const int ClientConfigComponent = 2;
-		public const int EventComponent = 3;
-		public const int GameObjectComponent = 4;
-		public const int ILEventComponent = 5;
-		public const int MessageDispatherComponent = 6;
-		public const int NetInnerComponent = 7;
-		public const int NetOuterComponent = 8;
-		public const int RobotComponent = 9;
-		public const int UIComponent = 10;
-		public const int WWWAsync = 11;
-		public const int ILRuntimeComponent = 12;
-		public const int ResourcesComponent = 13;
-		public const int UnitComponent = 14;
+		TimerComponent,
+		ClientConfigComponent,
+		EventComponent,
+		GameObjectComponent,
+		ILEventComponent,
+		MessageDispatherComponent,
+		NetInnerComponent,
+		NetOuterComponent,
+		RobotComponent,
+		UIComponent,
+		WWWAsync,
+		ILRuntimeComponent,
+		ResourcesComponent,
+		UnitComponent,
 
-		public const int AppManagerComponent = 15;
-		public const int GateSessionKeyComponent = 16;
-		public const int OptionComponent = 17;
-		public const int StartConfigComponent = 18;
-		public const int LockComponent = 19;
-		public const int MasterComponent = 20;
-		public const int RealmGateAddressComponent = 21;
-		public const int UILobbyComponent = 22;
-		public const int BehaviorTreeComponent = 23;
-		public const int CrossComponent = 24;
+		AppManagerComponent,
+		GateSessionKeyComponent,
+		OptionComponent,
+		StartConfigComponent,
+		LockComponent,
+		MasterComponent,
+		RealmGateAddressComponent,
+		UILoginComponent,
+		BehaviorTreeComponent,
+		CrossComponent,
 	}
 }

+ 7 - 0
Unity/Assets/Scripts/Base/Object/IStart.cs

@@ -0,0 +1,7 @@
+namespace Model
+{
+	public interface IStart
+	{
+		void Start();
+	}
+}

+ 3 - 0
Unity/Assets/Scripts/Base/Object/IStart.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 5a6304f22c9f47b4b5992372e8080252
+timeCreated: 1504145679

+ 59 - 5
Unity/Assets/Scripts/Base/Object/ObjectEvents.cs

@@ -1,20 +1,25 @@
 using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
 
 namespace Model
 {
 	public sealed class ObjectEvents
 	{
 		private static ObjectEvents instance;
-		
+
+
 		private Queue<Disposer> loads = new Queue<Disposer>();
 		private Queue<Disposer> loads2 = new Queue<Disposer>();
 
+		private Queue<Disposer> starts = new Queue<Disposer>();
+
 		private Queue<Disposer> updates = new Queue<Disposer>();
 		private Queue<Disposer> updates2 = new Queue<Disposer>();
 
 		private Queue<Disposer> lateUpdates = new Queue<Disposer>();
 		private Queue<Disposer> lateUpdates2 = new Queue<Disposer>();
-
+		
 		public static ObjectEvents Instance
 		{
 			get
@@ -23,21 +28,54 @@ namespace Model
 			}
 		}
 
+		public static void Close()
+		{
+			instance = null;
+		}
+
+		private readonly Dictionary<string, Assembly> dictionary = new Dictionary<string, Assembly>();
+
+		public void Add(string name, Assembly assembly)
+		{
+			this.dictionary[name] = assembly;
+			this.Load();
+		}
+
+		public void Remove(string name)
+		{
+			this.dictionary.Remove(name);
+		}
+
+		public Assembly[] GetAll()
+		{
+			return this.dictionary.Values.ToArray();
+		}
+
+		public Assembly Get(string name)
+		{
+			return this.dictionary[name];
+		}
+
 		public void Add(Disposer disposer)
 		{
 			if (disposer is ILoad)
 			{
-				loads.Enqueue(disposer);
+				this.loads.Enqueue(disposer);
+			}
+
+			if (disposer is IStart)
+			{
+				this.starts.Enqueue(disposer);
 			}
 
 			if (disposer is IUpdate)
 			{
-				updates.Enqueue(disposer);
+				this.updates.Enqueue(disposer);
 			}
 
 			if (disposer is ILateUpdate)
 			{
-				lateUpdates.Enqueue(disposer);
+				this.lateUpdates.Enqueue(disposer);
 			}
 		}
 
@@ -59,8 +97,24 @@ namespace Model
 			ObjectHelper.Swap(ref this.loads, ref this.loads2);
 		}
 
+		private void Start()
+		{
+			while (this.starts.Count > 0)
+			{
+				Disposer disposer = this.starts.Dequeue();
+				if (disposer.Id == 0)
+				{
+					continue;
+				}
+
+				((IStart)disposer).Start();
+			}
+		}
+
 		public void Update()
 		{
+			this.Start();
+
 			while (this.updates.Count > 0)
 			{
 				Disposer disposer = this.updates.Dequeue();

+ 3 - 0
Unity/Assets/Scripts/Base/UI.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: e64b29d0fee5409889d0f320e76d9920
+timeCreated: 1504163155

+ 1 - 1
Unity/Hotfix/Base/Other/LayerNames.cs → Unity/Assets/Scripts/Base/UI/LayerNames.cs

@@ -1,6 +1,6 @@
 using UnityEngine;
 
-namespace Hotfix
+namespace Model
 {
 	public static class LayerNames
 	{

+ 3 - 0
Unity/Assets/Scripts/Base/UI/LayerNames.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 0313ab7e20994a3eabf5ac4af2649ae9
+timeCreated: 1504163170

+ 1 - 1
Unity/Hotfix/Base/Other/UIFactoryAttribute.cs → Unity/Assets/Scripts/Base/UI/UIFactoryAttribute.cs

@@ -1,6 +1,6 @@
 using System;
 
-namespace Hotfix
+namespace Model
 {
 	[AttributeUsage(AttributeTargets.Class)]
 	public class UIFactoryAttribute: Attribute

+ 3 - 0
Unity/Assets/Scripts/Base/UI/UIFactoryAttribute.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7cf320727b5c499d8c1f646cf54691d6
+timeCreated: 1504163170

+ 8 - 0
Unity/Assets/Scripts/Base/UI/UIType.cs

@@ -0,0 +1,8 @@
+namespace Model
+{
+    public enum UIType
+    {
+        Root = 0,
+        Login,
+    }
+}

+ 3 - 0
Unity/Assets/Scripts/Base/UI/UIType.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 2541f74a1ec0436b8e812a69258e473e
+timeCreated: 1504163170

+ 1 - 1
Unity/Assets/Scripts/Component/BehaviorTreeComponent.cs

@@ -5,7 +5,7 @@ using UnityEngine;
 
 namespace Model
 {
-	[EntityEvent(EntityEventId.BehaviorTreeComponent)]
+	[EntityEvent((int)EntityEventId.BehaviorTreeComponent)]
 	public class BehaviorTreeComponent : Component
 	{
 		private Dictionary<string, Func<NodeProto, Node>> dictionary;

+ 1 - 1
Unity/Assets/Scripts/Component/CrossComponent.cs

@@ -6,7 +6,7 @@ namespace Model
 	/// <summary>
 	/// 事件分发,可以将事件分发到IL层
 	/// </summary>
-	[EntityEvent(EntityEventId.CrossComponent)]
+	[EntityEvent((int)EntityEventId.CrossComponent)]
 	public class CrossComponent : Component, IAwake
 	{
 		private static object[] args0 = new object[0];

+ 14 - 11
Unity/Assets/Scripts/Component/EventComponent.cs

@@ -3,19 +3,22 @@ using System.Collections.Generic;
 
 namespace Model
 {
-	[ObjectEvent(EntityEventId.EventComponent)]
-	public class EventComponent : Component, IAwake
+	[ObjectEvent((int)EntityEventId.EventComponent)]
+	public class EventComponent : Component, IAwake, ILoad
 	{
-		private Dictionary<int, List<object>> allEvents;
+		public static EventComponent Instance;
+
+		private Dictionary<EventIdType, List<object>> allEvents;
 
 		public void Awake()
 		{
+			Instance = this;
 			this.Load();
 		}
 
 		public void Load()
 		{
-			this.allEvents = new Dictionary<int, List<object>>();
+			this.allEvents = new Dictionary<EventIdType, List<object>>();
 
 			Type[] types = DllHelper.GetMonoTypes();
 			foreach (Type type in types)
@@ -26,16 +29,16 @@ namespace Model
 				{
 					EventAttribute aEventAttribute = (EventAttribute)attr;
 					object obj = Activator.CreateInstance(type);
-					if (!this.allEvents.ContainsKey(aEventAttribute.Type))
+					if (!this.allEvents.ContainsKey((EventIdType)aEventAttribute.Type))
 					{
-						this.allEvents.Add(aEventAttribute.Type, new List<object>());
+						this.allEvents.Add((EventIdType)aEventAttribute.Type, new List<object>());
 					}
-					this.allEvents[aEventAttribute.Type].Add(obj);
+					this.allEvents[(EventIdType)aEventAttribute.Type].Add(obj);
 				}
 			}
 		}
 
-		public void Run(int type)
+		public void Run(EventIdType type)
 		{
 			List<object> iEvents;
 			if (!this.allEvents.TryGetValue(type, out iEvents))
@@ -56,7 +59,7 @@ namespace Model
 			}
 		}
 
-		public void Run<A>(int type, A a)
+		public void Run<A>(EventIdType type, A a)
 		{
 			List<object> iEvents;
 			if (!this.allEvents.TryGetValue(type, out iEvents))
@@ -78,7 +81,7 @@ namespace Model
 			}
 		}
 
-		public void Run<A, B>(int type, A a, B b)
+		public void Run<A, B>(EventIdType type, A a, B b)
 		{
 			List<object> iEvents;
 			if (!this.allEvents.TryGetValue(type, out iEvents))
@@ -100,7 +103,7 @@ namespace Model
 			}
 		}
 
-		public void Run<A, B, C>(int type, A a, B b, C c)
+		public void Run<A, B, C>(EventIdType type, A a, B b, C c)
 		{
 			List<object> iEvents;
 			if (!this.allEvents.TryGetValue(type, out iEvents))

+ 1 - 1
Unity/Assets/Scripts/Component/MessageDispatherComponent.cs

@@ -6,7 +6,7 @@ namespace Model
 	/// <summary>
 	/// 消息分发组件
 	/// </summary>
-	[ObjectEvent(EntityEventId.MessageDispatherComponent)]
+	[ObjectEvent((int)EntityEventId.MessageDispatherComponent)]
 	public class MessageDispatherComponent : Component, IAwake, ILoad
 	{
 		private Dictionary<ushort, List<IMHandler>> handlers;

+ 1 - 1
Unity/Assets/Scripts/Component/ResourcesComponent.cs

@@ -5,7 +5,7 @@ using UnityEngine;
 
 namespace Model
 {
-	[ObjectEvent(EntityEventId.ResourcesComponent)]
+	[ObjectEvent((int)EntityEventId.ResourcesComponent)]
 	public class ResourcesComponent: Component
 	{
 		public static AssetBundleManifest AssetBundleManifestObject { get; set; }

+ 1 - 1
Unity/Assets/Scripts/Component/TimerComponent.cs

@@ -12,7 +12,7 @@ namespace Model
 		public TaskCompletionSource<bool> tcs;
 	}
 
-	[EntityEvent(EntityEventId.TimerComponent)]
+	[EntityEvent((int)EntityEventId.TimerComponent)]
 	public class TimerComponent: Component, IUpdate
 	{
 		private readonly Dictionary<long, Timer> timers = new Dictionary<long, Timer>();

+ 3 - 0
Unity/Assets/Scripts/Config.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c6e0e4d83fad46c3b1306e0c8fd35033
+timeCreated: 1504162083

+ 9 - 0
Unity/Assets/Scripts/Config/CanvasConfig.cs

@@ -0,0 +1,9 @@
+using UnityEngine;
+
+namespace Model
+{
+	public class CanvasConfig: MonoBehaviour
+	{
+		public string CanvasName;
+	}
+}

+ 3 - 0
Unity/Assets/Scripts/Config/CanvasConfig.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 8347f75bbf20473292de676504ad7398
+timeCreated: 1504162087

+ 1 - 1
Unity/Assets/Scripts/Entity/WWWAsync.cs

@@ -5,7 +5,7 @@ using UnityEngine;
 
 namespace Model
 {
-	[EntityEvent(EntityEventId.WWWAsync)]
+	[EntityEvent((int)EntityEventId.WWWAsync)]
 	public class WWWAsync: Entity
 	{
 		public WWW www;

+ 33 - 6
Unity/Assets/Scripts/DllHelper.cs → Unity/Assets/Scripts/Helper/DllHelper.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Reflection;
 using ILRuntime.CLR.Method;
@@ -10,41 +11,66 @@ namespace Model
 {
 	public static class DllHelper
 	{
+#if ILRuntime
+		public static void LoadHotfixAssembly()
+		{
+			GameObject code = (GameObject)Resources.Load("Code");
+			byte[] assBytes = code.GetComponent<ReferenceCollector>().Get<TextAsset>("Hotfix.dll").bytes;
+			byte[] mdbBytes = code.GetComponent<ReferenceCollector>().Get<TextAsset>("Hotfix.pdb").bytes;
+
+			using (MemoryStream fs = new MemoryStream(assBytes))
+			using (MemoryStream p = new MemoryStream(mdbBytes))
+			{
+				Init.Instance.AppDomain.LoadAssembly(fs, p, new Mono.Cecil.Pdb.PdbReaderProvider());
+			}
+		}
+#else
 		public static Assembly LoadHotfixAssembly()
 		{
 			GameObject code = (GameObject)Resources.Load("Code");
 			byte[] assBytes = code.Get<TextAsset>("Hotfix.dll").bytes;
-			byte[] mdbBytes = code.Get<TextAsset>("Hotfix.dll.mdb").bytes;
+			byte[] mdbBytes = code.Get<TextAsset>("Hotfix.pdb").bytes;
 			Assembly assembly = Assembly.Load(assBytes, mdbBytes);
 			return assembly;
 		}
+#endif
+
+		private static List<Type> _typeBuffer = new List<Type>();
+
 
 		public static Type[] GetHotfixTypes()
 		{
+#if ILRuntime
 			ILRuntime.Runtime.Enviorment.AppDomain appDomain = Init.Instance.AppDomain;
 			if (appDomain == null)
 			{
 				return new Type[0];
 			}
-			
-			List<Type> types = new List<Type>();
+            
 			foreach (IType type in appDomain.LoadedTypes.Values.ToArray())
 			{
-				types.Add(type.ReflectionType);
+                if (!_typeBuffer.Contains(type.ReflectionType))
+                {
+                    _typeBuffer.Add(type.ReflectionType);
+                }
 			}
-			return types.ToArray();
+			return _typeBuffer.ToArray();
+#else
+			return ObjectEvents.Instance.Get("Hotfix").GetTypes();
+#endif
 		}
 
 		public static Type[] GetMonoTypes()
 		{
 			List<Type> types = new List<Type>();
-			foreach (Assembly assembly in AssemblyManager.Instance.GetAll())
+			foreach (Assembly assembly in ObjectEvents.Instance.GetAll())
 			{
 				types.AddRange(assembly.GetTypes());
 			}
 			return types.ToArray();
 		}
 
+#if ILRuntime
 		public static IMethod[] GetMethodInfo(string typeName)
 		{
 			ILRuntime.Runtime.Enviorment.AppDomain appDomain = Init.Instance.AppDomain;
@@ -60,5 +86,6 @@ namespace Model
 		{
 			return Init.Instance.AppDomain.GetType(typeName);
 		}
+#endif
 	}
 }

+ 0 - 0
Unity/Assets/Scripts/DllHelper.cs.meta → Unity/Assets/Scripts/Helper/DllHelper.cs.meta


+ 56 - 0
Unity/Assets/Scripts/Helper/ILHelper.cs

@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using ILRuntime.CLR.Method;
+using ILRuntime.CLR.TypeSystem;
+using ILRuntime.Runtime.Enviorment;
+using UnityEngine;
+using AppDomain = System.AppDomain;
+
+namespace Model
+{
+	public static class ILHelper
+	{
+		public static unsafe void RegisterRedirection()
+		{
+			MethodInfo mi = typeof(Log).GetMethod("Debug", new Type[] { typeof(string) });
+			Init.Instance.AppDomain.RegisterCLRMethodRedirection(mi, ILRedirection.LogDebug);
+
+			MethodInfo mi2 = typeof(Log).GetMethod("Info", new Type[] { typeof(string) });
+			Init.Instance.AppDomain.RegisterCLRMethodRedirection(mi2, ILRedirection.LogInfo);
+
+			MethodInfo mi3 = typeof(Log).GetMethod("Error", new Type[] { typeof(string) });
+			Init.Instance.AppDomain.RegisterCLRMethodRedirection(mi3, ILRedirection.LogError);
+		}
+
+		public static unsafe void RegisterDelegate()
+		{
+			Init.Instance.AppDomain.DelegateManager.RegisterMethodDelegate<AChannel, System.Net.Sockets.SocketError>();
+			Init.Instance.AppDomain.DelegateManager.RegisterMethodDelegate<byte[], int, int>();
+
+		}
+
+		public static unsafe void RegisterILAdapter()
+		{
+			Assembly assembly = typeof(Init).Assembly;
+
+			foreach (Type type in assembly.GetTypes())
+			{
+				object[] attrs = type.GetCustomAttributes(typeof(ILAdapterAttribute), false);
+				if (attrs.Length == 0)
+				{
+					continue;
+				}
+				object obj = Activator.CreateInstance(type);
+				CrossBindingAdaptor adaptor = obj as CrossBindingAdaptor;
+				if (adaptor == null)
+				{
+					continue;
+				}
+				Init.Instance.AppDomain.RegisterCrossBindingAdaptor(adaptor);
+			}
+		}
+	}
+}

+ 3 - 0
Unity/Assets/Scripts/Helper/ILHelper.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: db76e26ce70b40d1823db1466a26fc83
+timeCreated: 1504164125

+ 0 - 14
Unity/Assets/Scripts/IInstanceMethod.cs

@@ -1,14 +0,0 @@
-namespace Model
-{
-	public abstract class IInstanceMethod
-	{
-		public string Name { get; protected set; }
-		public abstract void Run(params object[] param);
-	}
-
-	public abstract class IStaticMethod
-	{
-		public string Name { get; protected set; }
-		public abstract void Run(object instance, params object[] param);
-	}
-}

+ 0 - 56
Unity/Assets/Scripts/ILMethod.cs

@@ -1,56 +0,0 @@
-using System;
-using ILRuntime.CLR.Method;
-using ILRuntime.Runtime.Intepreter;
-
-namespace Model
-{
-	public class ILInstanceMethod : IInstanceMethod
-	{
-		private readonly ILRuntime.Runtime.Enviorment.AppDomain appDomain;
-		private readonly ILTypeInstance instance;
-		private readonly IMethod method;
-
-		public ILInstanceMethod(Type type, string methodName)
-		{
-			this.Name = methodName;
-			appDomain = Init.Instance.AppDomain;
-			this.instance = this.appDomain.Instantiate(type.FullName);
-			this.method = this.instance.Type.GetMethod(methodName);
-		}
-
-		public override void Run(params object[] param)
-		{
-			this.appDomain.Invoke(this.method, this.instance, param);
-		}
-	}
-
-	public class ILStaticMethod : IStaticMethod
-	{
-		private readonly ILRuntime.Runtime.Enviorment.AppDomain appDomain;
-		private readonly IMethod method;
-		private readonly object[] param;
-
-		public ILStaticMethod(IMethod method, int paramsCount)
-		{
-			this.param = new object[paramsCount + 1];
-			this.Name = method.Name;
-			appDomain = Init.Instance.AppDomain;
-			this.method = method;
-		}
-
-		public override void Run(object instance, params object[] p)
-		{
-			if (this.method.IsStatic)
-			{
-				this.param[0] = instance;
-				for (int i = 0; i < p.Length; ++i)
-				{
-					this.param[1 + i] = p[i];
-				}
-				this.appDomain.Invoke(this.method, null, this.param);
-				return;
-			}
-			this.appDomain.Invoke(this.method, instance, p);
-		}
-	}
-}

+ 52 - 70
Unity/Assets/Scripts/Init.cs

@@ -1,7 +1,7 @@
 using System;
 using System.IO;
 using System.Reflection;
-using Model;
+using System.Threading;
 using ILRuntime.CLR.Method;
 using ILRuntime.CLR.TypeSystem;
 using ILRuntime.Runtime.Enviorment;
@@ -9,40 +9,61 @@ using UnityEngine;
 
 namespace Model
 {
-	public class Init: MonoBehaviour
+	public class Init : MonoBehaviour
 	{
 		public static Init Instance;
 
-		public ILRuntime.Runtime.Enviorment.AppDomain AppDomain = new ILRuntime.Runtime.Enviorment.AppDomain();
+		public ILRuntime.Runtime.Enviorment.AppDomain AppDomain;
 
-		private readonly object[] param0 = new object[0];
-
-		private IMethod start;
-
-		private IMethod update;
-
-		private IMethod onApplicationQuit;
+		private IStaticMethod start;
+		private IStaticMethod update;
+		private IStaticMethod lateUpdate;
+		private IStaticMethod onApplicationQuit;
 
 		private void Start()
 		{
 			try
 			{
-				Instance = this;
-
-				AssemblyManager.Instance.Add("Model", typeof(Model.Init).Assembly);
+				if (Application.unityVersion != "2017.1.0f3")
+				{
+					Log.Error("请使用Unity2017正式版");
+					return;
+				}
 
-				this.RegisterAssembly();
-				this.RegisterILAdapter();
-				this.RegisterDelegate();
-				this.RegisterRedirection();
+				DontDestroyOnLoad(gameObject);
+				Instance = this;
 
-				IType hotfixInitType = AppDomain.LoadedTypes["Hotfix.Init"];
-				start = hotfixInitType.GetMethod("Start", 0);
-				update = hotfixInitType.GetMethod("Update", 0);
-				onApplicationQuit = hotfixInitType.GetMethod("OnApplicationQuit", 0);
 
+				ObjectEvents.Instance.Add("Model", typeof(Init).Assembly);
+
+#if ILRuntime
+				Log.Debug("run in ilruntime mode");
+
+				this.AppDomain = new ILRuntime.Runtime.Enviorment.AppDomain();
+				
+				DllHelper.LoadHotfixAssembly();			
+				ILHelper.RegisterILAdapter();
+				ILHelper.RegisterDelegate();
+				ILHelper.RegisterRedirection();
+				
+				this.start = new ILStaticMethod("Hotfix.Init", "Start", 0);
+				this.update = new ILStaticMethod("Hotfix.Init", "Update", 0);
+				this.lateUpdate = new ILStaticMethod("Hotfix.Init", "LateUpdate", 0);
+				this.onApplicationQuit = new ILStaticMethod("Hotfix.Init", "OnApplicationQuit", 0);
+
+#else
+				Log.Debug("run in mono mode");
+				ObjectEvents.Instance.Add("Model", typeof(Init).Assembly);
+				Assembly hotfix = DllHelper.LoadHotfixAssembly();
+				ObjectEvents.Instance.Add("Hotfix", hotfix);
+				Type hotfixInit = hotfix.GetType("Hotfix.Init");
+				this.start = new MonoStaticMethod(hotfixInit, "Start");
+				this.update = new MonoStaticMethod(hotfixInit, "Update");
+				this.lateUpdate = new MonoStaticMethod(hotfixInit, "LateUpdate");
+				this.onApplicationQuit = new MonoStaticMethod(hotfixInit, "OnApplicationQuit");
+#endif
 				// 进入热更新层
-				this.AppDomain.Invoke(this.start, null, param0);
+				this.start.Run();
 			}
 			catch (Exception e)
 			{
@@ -52,61 +73,22 @@ namespace Model
 
 		private void Update()
 		{
-			this.AppDomain.Invoke(this.update, null, this.param0);
-
+			this.update.Run();
 			ObjectEvents.Instance.Update();
 		}
 
-		private void OnApplicationQuit()
-		{
-			this.AppDomain.Invoke(this.onApplicationQuit, null, this.param0);
-		}
-
-		public void RegisterAssembly()
+		private void LateUpdate()
 		{
-			GameObject code = (GameObject)Resources.Load("Code");
-			byte[] assBytes = code.GetComponent<ReferenceCollector>().Get<TextAsset>("Hotfix.dll").bytes;
-			byte[] mdbBytes = code.GetComponent<ReferenceCollector>().Get<TextAsset>("Hotfix.pdb").bytes;
-
-			using (MemoryStream fs = new MemoryStream(assBytes))
-			using (MemoryStream p = new MemoryStream(mdbBytes))
-			{
-				AppDomain.LoadAssembly(fs, p, new Mono.Cecil.Pdb.PdbReaderProvider());
-			}
+			this.lateUpdate.Run();
+			ObjectEvents.Instance.LateUpdate();
 		}
 
-		public unsafe void RegisterRedirection()
-		{
-			MethodInfo mi = typeof(Log).GetMethod("Debug", new Type[] { typeof(string) });
-			this.AppDomain.RegisterCLRMethodRedirection(mi, ILRedirection.LogDebug);
-		}
-
-		public void RegisterDelegate()
-		{
-			AppDomain.DelegateManager.RegisterMethodDelegate<AChannel, System.Net.Sockets.SocketError>();
-			AppDomain.DelegateManager.RegisterMethodDelegate<byte[], int, int>();
-
-		}
-
-		public void RegisterILAdapter()
+		private void OnApplicationQuit()
 		{
-			Assembly assembly = typeof(Init).Assembly;
-
-			foreach (Type type in assembly.GetTypes())
-			{
-				object[] attrs = type.GetCustomAttributes(typeof(ILAdapterAttribute), false);
-				if (attrs.Length == 0)
-				{
-					continue;
-				}
-				object obj = Activator.CreateInstance(type);
-				CrossBindingAdaptor adaptor = obj as CrossBindingAdaptor;
-				if (adaptor == null)
-				{
-					continue;
-				}
-				AppDomain.RegisterCrossBindingAdaptor(adaptor);
-			}
+			Instance = null;
+			Game.Close();
+			ObjectEvents.Close();
+			this.onApplicationQuit.Run();
 		}
 	}
 }

+ 0 - 39
Unity/Assets/Scripts/MonoMethod.cs

@@ -1,39 +0,0 @@
-using System;
-using System.Reflection;
-using Model;
-
-namespace Model
-{
-	public class MonoInstanceMethod : IInstanceMethod
-	{
-		private readonly object instance;
-		private readonly MethodInfo methodInfo;
-		public MonoInstanceMethod(Type type, string methodName)
-		{
-			this.Name = methodName;
-			this.instance = Activator.CreateInstance(type);
-			this.methodInfo = type.GetMethod(methodName);
-		}
-
-		public override void Run(params object[] param)
-		{
-			this.methodInfo.Invoke(this.instance, param);
-		}
-	}
-
-	public class MonoStaticMethod : IStaticMethod
-	{
-		private readonly MethodInfo methodInfo;
-
-		public MonoStaticMethod(MethodInfo methodInfo)
-		{
-			this.methodInfo = methodInfo;
-			this.Name = methodInfo.Name;
-		}
-
-		public override void Run(object instance, params object[] param)
-		{
-			this.methodInfo.Run(instance, param);
-		}
-	}
-}

+ 3 - 0
Unity/Assets/Scripts/Other.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a7ff51f926ae4716829bec2b134d8d89
+timeCreated: 1504163325

+ 0 - 0
Unity/Assets/Scripts/Define.cs → Unity/Assets/Scripts/Other/Define.cs


+ 0 - 0
Unity/Assets/Scripts/Define.cs.meta → Unity/Assets/Scripts/Other/Define.cs.meta


+ 18 - 0
Unity/Assets/Scripts/Other/IInstanceMethod.cs

@@ -0,0 +1,18 @@
+namespace Model
+{
+	public abstract class IInstanceMethod
+	{
+		public abstract void Run();
+		public abstract void Run(object a);
+		public abstract void Run(object a, object b);
+		public abstract void Run(object a, object b, object c);
+	}
+
+	public abstract class IStaticMethod
+	{
+		public abstract void Run();
+		public abstract void Run(object a);
+		public abstract void Run(object a, object b);
+		public abstract void Run(object a, object b, object c);
+	}
+}

+ 0 - 0
Unity/Assets/Scripts/IInstanceMethod.cs.meta → Unity/Assets/Scripts/Other/IInstanceMethod.cs.meta


+ 89 - 0
Unity/Assets/Scripts/Other/ILMethod.cs

@@ -0,0 +1,89 @@
+using System;
+using ILRuntime.CLR.Method;
+using ILRuntime.Runtime.Intepreter;
+
+namespace Model
+{
+	public class ILInstanceMethod : IInstanceMethod
+	{
+		private readonly ILRuntime.Runtime.Enviorment.AppDomain appDomain;
+		private readonly ILTypeInstance instance;
+		private readonly IMethod method;
+		private readonly object[] param;
+
+		public ILInstanceMethod(Type type, string methodName)
+		{
+			appDomain = Init.Instance.AppDomain;
+			this.instance = this.appDomain.Instantiate(type.FullName);
+			this.method = this.instance.Type.GetMethod(methodName);
+			int n = this.method.ParameterCount;
+			this.param = new object[n];
+		}
+
+		public override void Run()
+		{
+			this.appDomain.Invoke(this.method, this.instance, param);
+		}
+
+		public override void Run(object a)
+		{
+			this.param[0] = a;
+			this.appDomain.Invoke(this.method, this.instance, param);
+		}
+
+		public override void Run(object a, object b)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.appDomain.Invoke(this.method, this.instance, param);
+		}
+
+		public override void Run(object a, object b, object c)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.param[2] = c;
+			this.appDomain.Invoke(this.method, this.instance, param);
+		}
+	}
+
+	public class ILStaticMethod : IStaticMethod
+	{
+		private readonly ILRuntime.Runtime.Enviorment.AppDomain appDomain;
+		private readonly IMethod method;
+		private readonly object[] param;
+
+		public ILStaticMethod(string typeName, string methodName, int paramsCount)
+		{
+			appDomain = Init.Instance.AppDomain;
+			this.method = appDomain.GetType(typeName).GetMethod(methodName, paramsCount);
+			this.param = new object[paramsCount];
+		}
+
+		public override void Run()
+		{
+			this.appDomain.Invoke(this.method, null, this.param);
+		}
+
+		public override void Run(object a)
+		{
+			this.param[0] = a;
+			this.appDomain.Invoke(this.method, null, param);
+		}
+
+		public override void Run(object a, object b)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.appDomain.Invoke(this.method, null, param);
+		}
+
+		public override void Run(object a, object b, object c)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.param[2] = c;
+			this.appDomain.Invoke(this.method, null, param);
+		}
+	}
+}

+ 0 - 0
Unity/Assets/Scripts/ILMethod.cs.meta → Unity/Assets/Scripts/Other/ILMethod.cs.meta


+ 83 - 0
Unity/Assets/Scripts/Other/MonoMethod.cs

@@ -0,0 +1,83 @@
+using System;
+using System.Reflection;
+
+namespace Model
+{
+	public class MonoInstanceMethod : IInstanceMethod
+	{
+		private readonly object obj;
+		private readonly MethodInfo methodInfo;
+		private readonly object[] param;
+
+		public MonoInstanceMethod(Type type, string methodName)
+		{
+			this.obj = Activator.CreateInstance(type);
+			this.methodInfo = type.GetMethod(methodName);
+			this.param = new object[this.methodInfo.GetParameters().Length];
+		}
+
+		public override void Run()
+		{
+			this.methodInfo.Invoke(this.obj, param);
+		}
+
+		public override void Run(object a)
+		{
+			this.methodInfo.Invoke(this.obj, param);
+		}
+
+		public override void Run(object a, object b)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.methodInfo.Invoke(this.obj, param);
+		}
+
+		public override void Run(object a, object b, object c)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.param[2] = c;
+			this.methodInfo.Invoke(this.obj, param);
+		}
+	}
+
+	public class MonoStaticMethod : IStaticMethod
+	{
+		private readonly MethodInfo methodInfo;
+
+		private readonly object[] param;
+
+		public MonoStaticMethod(Type type, string methodName)
+		{
+			this.methodInfo = type.GetMethod(methodName);
+			this.param = new object[this.methodInfo.GetParameters().Length];
+		}
+
+		public override void Run()
+		{
+			this.methodInfo.Invoke(null, param);
+		}
+
+		public override void Run(object a)
+		{
+			this.param[0] = a;
+			this.methodInfo.Invoke(null, param);
+		}
+
+		public override void Run(object a, object b)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.methodInfo.Invoke(null, param);
+		}
+
+		public override void Run(object a, object b, object c)
+		{
+			this.param[0] = a;
+			this.param[1] = b;
+			this.param[2] = c;
+			this.methodInfo.Invoke(null, param);
+		}
+	}
+}

+ 0 - 0
Unity/Assets/Scripts/MonoMethod.cs.meta → Unity/Assets/Scripts/Other/MonoMethod.cs.meta


+ 0 - 0
Unity/Assets/Scripts/ReferenceCollector.cs → Unity/Assets/Scripts/Other/ReferenceCollector.cs


+ 0 - 0
Unity/Assets/Scripts/ReferenceCollector.cs.meta → Unity/Assets/Scripts/Other/ReferenceCollector.cs.meta


+ 0 - 25
Unity/Hotfix/AssetBundleHelper.cs

@@ -1,25 +0,0 @@
-namespace Hotfix
-{
-	public static class AssetBundleHelper
-	{
-		public static string GetBundleNameById(string id, EntityType entityType = EntityType.None)
-		{
-			string subString = id.Substring(0, 3);
-			switch (subString[0])
-			{
-				case '1':
-				case '2':
-				case '3':
-					return "3000";
-				case '4':
-				case '5':
-				case '6':
-				case '8':
-					return subString;
-				case '9':
-					return "900";
-			}
-			return subString;
-		}
-	}
-}

+ 0 - 15
Unity/Hotfix/Base/Event/AEventAttribute.cs

@@ -1,15 +0,0 @@
-using System;
-
-namespace Hotfix
-{
-	[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
-	public abstract class AEventAttribute: Attribute
-	{
-		public int Type { get; private set; }
-
-		protected AEventAttribute(int type)
-		{
-			this.Type = type;
-		}
-	}
-}

+ 0 - 12
Unity/Hotfix/Base/Event/AEventAttribute.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 288485f014836824b89d9a901bc5dcca
-timeCreated: 1477377275
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 89
Unity/Hotfix/Base/Event/Env.cs

@@ -1,89 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace Hotfix
-{
-	public class Env
-	{
-		private Dictionary<EnvKey, object> values = new Dictionary<EnvKey, object>();
-
-		public object this[EnvKey key]
-		{
-			get
-			{
-				return this.values[key];
-			}
-			set
-			{
-				if (this.values == null)
-				{
-					this.values = new Dictionary<EnvKey, object>();
-				}
-				this.values[key] = value;
-			}
-		}
-
-		public T Get<T>(EnvKey key)
-		{
-			if (this.values == null || !this.values.ContainsKey(key))
-			{
-				return default(T);
-			}
-			object value = values[key];
-			try
-			{
-				return (T) value;
-			}
-			catch (InvalidCastException e)
-			{
-				throw new Exception($"不能把{value.GetType()}转换为{typeof (T)}", e);
-			}
-		}
-
-		public void Set(EnvKey key, object obj)
-		{
-			if (this.values == null)
-			{
-				this.values = new Dictionary<EnvKey, object>();
-			}
-			this.values[key] = obj;
-		}
-
-		public bool ContainKey(EnvKey key)
-		{
-			if (this.values == null)
-			{
-				return false;
-			}
-			return this.values.ContainsKey(key);
-		}
-
-		public void Remove(EnvKey key)
-		{
-			if (this.values == null)
-			{
-				return;
-			}
-			this.values.Remove(key);
-			if (this.values.Count == 0)
-			{
-				this.values = null;
-			}
-		}
-
-		public void Add(EnvKey key, object value)
-		{
-			if (this.values == null)
-			{
-				this.values = new Dictionary<EnvKey, object>();
-			}
-			this.values[key] = value;
-		}
-
-		public IEnumerator GetEnumerator()
-		{
-			return this.values.GetEnumerator();
-		}
-	}
-}

+ 0 - 12
Unity/Hotfix/Base/Event/Env.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 414e43d5bdd3d75458b86b1cf07ad175
-timeCreated: 1477377275
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 10
Unity/Hotfix/Base/Event/EnvKey.cs

@@ -1,10 +0,0 @@
-namespace Hotfix
-{
-	/// <summary>
-	/// 一般使用事件名+变量名
-	/// </summary>
-	public enum EnvKey
-	{
-		ChannelError
-	}
-}

+ 0 - 12
Unity/Hotfix/Base/Event/EnvKey.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: c6db3274f6a56f44eaaa14e0f2eecf54
-timeCreated: 1476427109
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 9
Unity/Hotfix/Base/Event/EventAttribute.cs

@@ -1,9 +0,0 @@
-namespace Hotfix
-{
-	public class EventAttribute: AEventAttribute
-	{
-		public EventAttribute(int type): base(type)
-		{
-		}
-	}
-}

+ 0 - 12
Unity/Hotfix/Base/Event/EventAttribute.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 46c83a3a046e502409ed650e1f3bc238
-timeCreated: 1477377275
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 18
Unity/Hotfix/Base/Event/EventIdType.cs

@@ -1,18 +0,0 @@
-namespace Hotfix
-{
-	public static class EventIdType
-	{
-		public const int InitSceneStart = 1;
-
-		public const int BehaviorTreeRunTreeEvent = 2;
-		public const int BehaviorTreeOpenEditor = 3;
-		public const int BehaviorTreeClickNode = 4;
-		public const int BehaviorTreeAfterChangeNodeType = 5;
-		public const int BehaviorTreeCreateNode = 6;
-		public const int BehaviorTreePropertyDesignerNewCreateClick = 7;
-		public const int BehaviorTreeMouseInNode = 8;
-		public const int BehaviorTreeConnectState = 9;
-		public const int BehaviorTreeReplaceClick = 10;
-		public const int BehaviorTreeRightDesignerDrag = 11;
-	}
-}

+ 0 - 12
Unity/Hotfix/Base/Event/EventIdType.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 50aff527fd963e44fbce24e2ef3c1287
-timeCreated: 1476421726
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 12
Unity/Hotfix/Base/Event/IEvent.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: dab16cc3acc616f4880a9cd714ba9be0
-timeCreated: 1477377275
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 1 - 1
Unity/Hotfix/Base/Message/AMHandler.cs

@@ -3,7 +3,7 @@ using Model;
 
 namespace Hotfix
 {
-	public abstract class AMHandler<Message> : IMHandler where Message : AMessage
+	public abstract class AMHandler<Message> : IMHandler where Message: AMessage 
 	{
 		protected abstract void Run(Message message);
 

+ 0 - 27
Unity/Hotfix/Base/Message/AMessage.cs

@@ -1,27 +0,0 @@
-namespace Hotfix
-{
-	public abstract class AMessage
-	{
-	}
-
-	public abstract class ARequest: AMessage
-	{
-		public uint RpcId;
-	}
-
-	/// <summary>
-	/// 服务端回的RPC消息需要继承这个抽象类
-	/// </summary>
-	public abstract class AResponse
-	{
-		public uint RpcId;
-
-		public int Error = 0;
-		public string Message = "";
-	}
-
-	public abstract class AFrameMessage : AMessage
-	{
-		public long Id;
-	}
-}

+ 6 - 3
Unity/Hotfix/Base/Object/Entity.cs

@@ -137,7 +137,8 @@ namespace Hotfix
 
 		public void RemoveComponent<K>() where K : Component
 		{
-			if (!this.componentDict.TryGetValue(typeof(K), out Component component))
+			Component component;
+			if (!this.componentDict.TryGetValue(typeof(K), out component))
 			{
 				return;
 			}
@@ -153,7 +154,8 @@ namespace Hotfix
 
 		public void RemoveComponent(Type type)
 		{
-			if (!this.componentDict.TryGetValue(type, out Component component))
+			Component component;
+			if (!this.componentDict.TryGetValue(type, out component))
 			{
 				return;
 			}
@@ -169,7 +171,8 @@ namespace Hotfix
 
 		public K GetComponent<K>() where K : Component
 		{
-			if (!this.componentDict.TryGetValue(typeof(K), out Component component))
+			Component component;
+			if (!this.componentDict.TryGetValue(typeof(K), out component))
 			{
 				return default(K);
 			}

+ 0 - 15
Unity/Hotfix/Base/Object/ObjectEventAttribute.cs

@@ -1,15 +0,0 @@
-using System;
-
-namespace Hotfix
-{
-	[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
-	public class ObjectEventAttribute: Attribute
-	{
-		public int ClassType;
-
-		public ObjectEventAttribute(int classType)
-		{
-			this.ClassType = classType;
-		}
-	}
-}

+ 3 - 0
Unity/Hotfix/Base/Object/ObjectEvents.cs

@@ -15,6 +15,9 @@ namespace Hotfix
 		private Queue<Disposer> lateUpdates = new Queue<Disposer>();
 		private Queue<Disposer> lateUpdates2 = new Queue<Disposer>();
 
+		private Queue<Disposer> frameUpdates = new Queue<Disposer>();
+		private Queue<Disposer> frameUpdates2 = new Queue<Disposer>();
+
 		public static ObjectEvents Instance
 		{
 			get

+ 0 - 30
Unity/Hotfix/Base/Other/EntityEventId.cs

@@ -1,30 +0,0 @@
-namespace Hotfix
-{
-	public static class EntityEventId
-	{
-		public const int TimerComponent = 1;
-		public const int ClientConfigComponent = 2;
-		public const int EventComponent = 3;
-		public const int GameObjectComponent = 4;
-		public const int ILEventComponent = 5;
-		public const int MessageDispatherComponent = 6;
-		public const int NetInnerComponent = 7;
-		public const int NetOuterComponent = 8;
-		public const int RobotComponent = 9;
-		public const int UIComponent = 10;
-		public const int WWWAsync = 11;
-		public const int ILRuntimeComponent = 12;
-		public const int ResourcesComponent = 13;
-		public const int UnitComponent = 14;
-
-		public const int AppManagerComponent = 15;
-		public const int GateSessionKeyComponent = 16;
-		public const int OptionComponent = 17;
-		public const int StartConfigComponent = 18;
-		public const int LockComponent = 19;
-		public const int MasterComponent = 20;
-		public const int RealmGateAddressComponent = 21;
-		public const int UILobbyComponent = 22;
-		public const int BehaviorTreeComponent = 23;
-	}
-}

+ 5 - 2
Unity/Hotfix/Base/Other/IUIFactory.cs

@@ -1,7 +1,10 @@
-namespace Hotfix
+using Model;
+using UnityEngine;
+
+namespace Hotfix
 {
 	public interface IUIFactory
 	{
-		UI Create(Scene scene, int type, UI parent);
+		UI Create(Scene scene, UIType type, GameObject parent);
 	}
 }

+ 0 - 8
Unity/Hotfix/Base/Other/UIType.cs

@@ -1,8 +0,0 @@
-namespace Hotfix
-{
-	public static class UIType
-	{
-		public const int Root = 1;
-		public const int Lobby = 2;
-	}
-}

+ 0 - 85
Unity/Hotfix/Component/ConfigComponent.cs

@@ -1,85 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Model;
-
-namespace Hotfix
-{
-	public class ConfigComponent: Component
-	{
-		private Dictionary<Type, ICategory> allConfig;
-
-		private void Load()
-		{
-			this.allConfig = new Dictionary<Type, ICategory>();
-			Type[] types = DllHelper.GetHotfixTypes();
-
-			foreach (Type type in types)
-			{
-				object[] attrs = type.GetCustomAttributes(typeof (ConfigAttribute), false);
-				if (attrs.Length == 0)
-				{
-					continue;
-				}
-				object obj = Activator.CreateInstance(type);
-
-				ICategory iCategory = obj as ICategory;
-				if (iCategory == null)
-				{
-					throw new Exception($"class: {type.Name} not inherit from ACategory");
-				}
-				iCategory.BeginInit();
-				iCategory.EndInit();
-
-				this.allConfig[iCategory.ConfigType] = iCategory;
-			}
-		}
-
-		public T GetOne<T>() where T : AConfig
-		{
-			Type type = typeof (T);
-			if (!this.allConfig.TryGetValue(type, out ICategory configCategory))
-			{
-				throw new Exception($"ConfigComponent not found key: {type.FullName}");
-			}
-			return ((ACategory<T>) configCategory).GetOne();
-		}
-
-		public T Get<T>(long id) where T : AConfig
-		{
-			Type type = typeof (T);
-			if (!this.allConfig.TryGetValue(type, out ICategory configCategory))
-			{
-				throw new Exception($"ConfigComponent not found key: {type.FullName}");
-			}
-			return ((ACategory<T>) configCategory)[id];
-		}
-
-		public T TryGet<T>(int id) where T : AConfig
-		{
-			Type type = typeof (T);
-			if (!this.allConfig.TryGetValue(type, out ICategory configCategory))
-			{
-				return default(T);
-			}
-			return ((ACategory<T>) configCategory).TryGet(id);
-		}
-
-		public T[] GetAll<T>() where T : AConfig
-		{
-			Type type = typeof (T);
-			if (!this.allConfig.TryGetValue(type, out ICategory configCategory))
-			{
-				throw new Exception($"ConfigComponent not found key: {type.FullName}");
-			}
-			return ((ACategory<T>) configCategory).GetAll();
-		}
-
-		public T GetCategory<T>() where T : class, ICategory, new()
-		{
-			T t = new T();
-			Type type = t.ConfigType;
-			bool ret = this.allConfig.TryGetValue(type, out ICategory category);
-			return ret? (T) category : null;
-		}
-	}
-}

+ 22 - 19
Unity/Hotfix/Component/EventComponent.cs

@@ -4,10 +4,10 @@ using Model;
 
 namespace Hotfix
 {
-	[ObjectEvent(EntityEventId.EventComponent)]
+	[ObjectEvent((int)EntityEventId.EventComponent)]
 	public class EventComponent : Component, IAwake
 	{
-		private Dictionary<int, List<object>> allEvents;
+		private Dictionary<EventIdType, List<object>> allEvents;
 
 		public void Awake()
 		{
@@ -16,29 +16,29 @@ namespace Hotfix
 
 		public void Load()
 		{
-			this.allEvents = new Dictionary<int, List<object>>();
-
+			this.allEvents = new Dictionary<EventIdType, List<object>>();
+			
 			Type[] types = DllHelper.GetHotfixTypes();
 			foreach (Type type in types)
 			{
 				object[] attrs = type.GetCustomAttributes(typeof(EventAttribute), false);
-
 				foreach (object attr in attrs)
-				{
-					EventAttribute aEventAttribute = (EventAttribute)attr;
+                {
+                    EventAttribute aEventAttribute = (EventAttribute)attr;
 					object obj = Activator.CreateInstance(type);
-					if (!this.allEvents.ContainsKey(aEventAttribute.Type))
+					if (!this.allEvents.ContainsKey((EventIdType)aEventAttribute.Type))
 					{
-						this.allEvents.Add(aEventAttribute.Type, new List<object>());
+						this.allEvents.Add((EventIdType)aEventAttribute.Type, new List<object>());
 					}
-					this.allEvents[aEventAttribute.Type].Add(obj);
+					this.allEvents[(EventIdType)aEventAttribute.Type].Add(obj);
 				}
 			}
 		}
 
-		public void Run(int type)
+		public void Run(EventIdType type)
 		{
-			if (!this.allEvents.TryGetValue(type, out List<object> iEvents))
+			List<object> iEvents;
+			if (!this.allEvents.TryGetValue(type, out iEvents))
 			{
 				return;
 			}
@@ -51,14 +51,15 @@ namespace Hotfix
 				}
 				catch (Exception e)
 				{
-					Log.Error(e.ToString());
+					Log.Error(e.ToStr());
 				}
 			}
 		}
 
-		public void Run<A>(int type, A a)
+		public void Run<A>(EventIdType type, A a)
 		{
-			if (!this.allEvents.TryGetValue(type, out List<object> iEvents))
+			List<object> iEvents;
+			if (!this.allEvents.TryGetValue(type, out iEvents))
 			{
 				return;
 			}
@@ -77,9 +78,10 @@ namespace Hotfix
 			}
 		}
 
-		public void Run<A, B>(int type, A a, B b)
+		public void Run<A, B>(EventIdType type, A a, B b)
 		{
-			if (!this.allEvents.TryGetValue(type, out List<object> iEvents))
+			List<object> iEvents;
+			if (!this.allEvents.TryGetValue(type, out iEvents))
 			{
 				return;
 			}
@@ -98,9 +100,10 @@ namespace Hotfix
 			}
 		}
 
-		public void Run<A, B, C>(int type, A a, B b, C c)
+		public void Run<A, B, C>(EventIdType type, A a, B b, C c)
 		{
-			if (!this.allEvents.TryGetValue(type, out List<object> iEvents))
+			List<object> iEvents;
+			if (!this.allEvents.TryGetValue(type, out iEvents))
 			{
 				return;
 			}

+ 3 - 2
Unity/Hotfix/Component/GameObjectComponent.cs

@@ -1,8 +1,9 @@
-using UnityEngine;
+using Model;
+using UnityEngine;
 
 namespace Hotfix
 {
-	[ObjectEvent(EntityEventId.GameObjectComponent)]
+	[ObjectEvent((int)EntityEventId.GameObjectComponent)]
 	public class GameObjectComponent: Component
 	{
 		public GameObject GameObject { get; private set; }

+ 2 - 1
Unity/Hotfix/Component/KVComponent.cs

@@ -21,7 +21,8 @@ namespace Hotfix
 
 		public T Get<T>(string key)
 		{
-			if (!this.kv.TryGetValue(key, out object k))
+			object k;
+			if (!this.kv.TryGetValue(key, out k))
 			{
 				return default(T);
 			}

+ 7 - 6
Unity/Hotfix/Component/MessageDispatherComponent.cs

@@ -8,10 +8,10 @@ namespace Hotfix
 	/// 消息分发组件
 	/// </summary>
 	[ObjectEvent((int)EntityEventId.MessageDispatherComponent)]
-	public class MessageDispatherComponent : Component, IAwake, ILoad
+	public class MessageDispatherComponent: Component, IAwake, ILoad
 	{
 		private Dictionary<ushort, List<IMHandler>> handlers;
-
+		
 
 		public void Awake()
 		{
@@ -20,9 +20,9 @@ namespace Hotfix
 
 		public void Load()
 		{
-			handlers = new Dictionary<ushort, List<IMHandler>>();
-
-			Type[] types = DllHelper.GetHotfixTypes();
+            handlers = new Dictionary<ushort, List<IMHandler>>();
+            
+            Type[] types = DllHelper.GetHotfixTypes();
 
 			foreach (Type type in types)
 			{
@@ -43,7 +43,8 @@ namespace Hotfix
 
 		public void Handle(MessageInfo messageInfo)
 		{
-			if (!this.handlers.TryGetValue(messageInfo.Opcode, out List<IMHandler> actions))
+			List<IMHandler> actions;
+			if (!this.handlers.TryGetValue(messageInfo.Opcode, out actions))
 			{
 				Log.Error($"消息 {messageInfo.Opcode} 没有处理");
 				return;

+ 4 - 2
Unity/Hotfix/Component/RobotComponent.cs

@@ -1,6 +1,8 @@
-namespace Hotfix
+using Model;
+
+namespace Hotfix
 {
-	[ObjectEvent(EntityEventId.RobotComponent)]
+	[ObjectEvent((int)EntityEventId.RobotComponent)]
 	public class RobotComponent: Component
 	{
 		public override void Dispose()

+ 6 - 4
Unity/Hotfix/Component/TimerComponent.cs

@@ -5,14 +5,14 @@ using Model;
 
 namespace Hotfix
 {
-	public class Timer
+	public struct Timer
 	{
 		public long Id { get; set; }
 		public long Time { get; set; }
 		public TaskCompletionSource<bool> tcs;
 	}
 
-	[ObjectEvent(EntityEventId.TimerComponent)]
+	[ObjectEvent((int)EntityEventId.TimerComponent)]
 	public class TimerComponent: Component, IUpdate
 	{
 		private readonly Dictionary<long, Timer> timers = new Dictionary<long, Timer>();
@@ -42,7 +42,8 @@ namespace Hotfix
 				long[] timeOutId = this.timeId.GetAll(key);
 				foreach (long id in timeOutId)
 				{
-					if (!this.timers.TryGetValue(id, out Timer timer))
+					Timer timer;
+					if (!this.timers.TryGetValue(id, out timer))
 					{
 						continue;
 					}
@@ -54,7 +55,8 @@ namespace Hotfix
 
 		private void Remove(long id)
 		{
-			if (!this.timers.TryGetValue(id, out Timer timer))
+			Timer timer;
+			if (!this.timers.TryGetValue(id, out timer))
 			{
 				return;
 			}

+ 66 - 33
Unity/Hotfix/Component/UIComponent.cs

@@ -1,12 +1,14 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Reflection;
 using ILRuntime.CLR.Method;
 using Model;
 using UnityEngine;
 
 namespace Hotfix
 {
+#if ILRuntime
 	public class IILUIFactoryMethod : IUIFactory
 	{
 		private readonly object instance;
@@ -18,37 +20,59 @@ namespace Hotfix
 			this.methodInfo = DllHelper.GetType(type.FullName).GetMethod("Create", 3);
 		}
 
-		public UI Create(Scene scene, int type, UI parent)
+		public UI Create(Scene scene, UIType type, GameObject parent)
 		{
 			this.params3[0] = scene;
 			this.params3[1] = type;
 			this.params3[2] = parent;
-			return (UI)Model.Init.Instance.AppDomain.Invoke(this.methodInfo, this.instance, this.params3);
+			return (UI)Model.Init.Instance.AppDomain.Invoke(methodInfo, instance, params3);
 		}
 	}
+#else
+	public class IMonoUIFactoryMethod : IUIFactory
+	{
+		private readonly object instance;
+		private readonly MethodInfo methodInfo;
+		private readonly object[] params3 = new object[3];
+		public IMonoUIFactoryMethod(Type type)
+		{
+			this.instance = Activator.CreateInstance(type);
+			this.methodInfo = type.GetMethod("Create");
+		}
+
+		public UI Create(Scene scene, UIType type, GameObject parent)
+		{
+			this.params3[0] = scene;
+			this.params3[1] = type;
+			this.params3[2] = parent;
+			return (UI)this.methodInfo.Invoke(this.instance, this.params3);
+		}
+	}
+#endif
 
 	/// <summary>
 	/// 管理所有UI
 	/// </summary>
-	[ObjectEvent(EntityEventId.UIComponent)]
+	[ObjectEvent((int)EntityEventId.UIComponent)]
 	public class UIComponent: Component, IAwake, ILoad
 	{
-		private UI Root;
-		private Dictionary<int, IUIFactory> UiTypes;
-		private readonly Dictionary<int, UI> uis = new Dictionary<int, UI>();
+		private GameObject Root;
+		private Dictionary<UIType, IUIFactory> UiTypes;
+		private readonly Dictionary<UIType, UI> uis = new Dictionary<UIType, UI>();
 
 		public override void Dispose()
 		{
-			if (this.Id == 0)
+			if (Id == 0)
 			{
 				return;
 			}
 
 			base.Dispose();
 
-			foreach (int type in uis.Keys.ToArray())
+			foreach (UIType type in uis.Keys.ToArray())
 			{
-				if (!uis.TryGetValue(type, out UI ui))
+				UI ui;
+				if (!uis.TryGetValue(type, out ui))
 				{
 					continue;
 				}
@@ -59,16 +83,15 @@ namespace Hotfix
 
 		public void Awake()
 		{
-			GameObject uiCanvas = GameObject.Find("Global/UI/UICanvas");
-			this.Root = new UI(this.GetOwner<Scene>(), UIType.Root, null, uiCanvas);
+			this.Root = GameObject.Find("Global/UI/");
 			this.Load();
 		}
 
 		public void Load()
 		{
-			this.UiTypes = new Dictionary<int, IUIFactory>();
-			
-			Type[] types = DllHelper.GetHotfixTypes();
+            UiTypes = new Dictionary<UIType, IUIFactory>();
+            
+            Type[] types = DllHelper.GetHotfixTypes();
 
 			foreach (Type type in types)
 			{
@@ -79,69 +102,79 @@ namespace Hotfix
 				}
 
 				UIFactoryAttribute attribute = attrs[0] as UIFactoryAttribute;
-				if (this.UiTypes.ContainsKey(attribute.Type))
+				if (UiTypes.ContainsKey((UIType)attribute.Type))
 				{
+                    Log.Debug($"已经存在同类UI Factory: {attribute.Type}");
 					throw new Exception($"已经存在同类UI Factory: {attribute.Type}");
 				}
-				
+#if ILRuntime
 				IUIFactory iuiFactory = new IILUIFactoryMethod(type);
+#else
+				IUIFactory iuiFactory = new IMonoUIFactoryMethod(type);
+#endif
 
-				this.UiTypes.Add(attribute.Type, iuiFactory);
+				this.UiTypes.Add((UIType)attribute.Type, iuiFactory);
 			}
 		}
 
-		public UI Create(int type)
+		public UI Create(UIType type)
 		{
 			try
 			{
-				UI ui = this.UiTypes[type].Create(this.GetOwner<Scene>(), type, this.Root);
-				this.uis.Add(type, ui);
+				UI ui = UiTypes[type].Create(GetOwner<Scene>(), type, Root);
+                uis.Add(type, ui);
 
+				// 设置canvas
+				string cavasName = ui.GameObject.GetComponent<CanvasConfig>().CanvasName;
+				ui.GameObject.transform.SetParent(this.Root.Get<GameObject>(cavasName).transform, false);
 				return ui;
 			}
 			catch (Exception e)
 			{
-				throw new Exception($"{type} UI 错误: {e}");
+				throw new Exception($"{type} UI 错误: {e.ToStr()}");
 			}
 		}
 
-		public void Add(int type, UI ui)
+		public void Add(UIType type, UI ui)
 		{
 			this.uis.Add(type, ui);
 		}
 
-		public void Remove(int type)
+		public void Remove(UIType type)
 		{
-			if (!this.uis.TryGetValue(type, out UI ui))
+			UI ui;
+			if (!uis.TryGetValue(type, out ui))
 			{
 				return;
 			}
-			this.uis.Remove(type);
+            uis.Remove(type);
 			ui.Dispose();
 		}
 
 		public void RemoveAll()
 		{
-			foreach (int type in this.uis.Keys.ToArray())
+			foreach (UIType type in this.uis.Keys.ToArray())
 			{
-				if (!this.uis.TryGetValue(type, out UI ui))
+				UI ui;
+				if (!this.uis.TryGetValue(type, out ui))
 				{
 					continue;
-				}
-				this.uis.Remove(type);
+                }
+                this.uis.Remove(type);
 				ui.Dispose();
 			}
 		}
 
-		public UI Get(int type)
+		public UI Get(UIType type)
 		{
-			this.uis.TryGetValue(type, out UI ui);
+			UI ui;
+			this.uis.TryGetValue(type, out ui);
 			return ui;
 		}
 
-		public List<int> GetUITypeList()
+		public List<UIType> GetUITypeList()
 		{
-			return new List<int>(this.uis.Keys);
+			return new List<UIType>(this.uis.Keys);
 		}
 	}
 }

+ 0 - 40
Unity/Hotfix/Component/UnitComponent.cs

@@ -1,40 +0,0 @@
-using System.Collections.Generic;
-
-namespace Hotfix
-{
-	[ObjectEvent(EntityEventId.UnitComponent)]
-	public class UnitComponent: Component
-	{
-		private readonly Dictionary<long, Unit> idUnits = new Dictionary<long, Unit>();
-
-		public void Add(Unit unit)
-		{
-			this.idUnits.Add(unit.Id, unit);
-		}
-
-		public Unit Get(long id)
-		{
-			this.idUnits.TryGetValue(id, out Unit unit);
-			return unit;
-		}
-
-		public void Remove(long id)
-		{
-			this.idUnits.Remove(id);
-		}
-
-		public override void Dispose()
-		{
-			if (this.Id == 0)
-			{
-				return;
-			}
-			base.Dispose();
-
-			foreach (Unit unit in this.idUnits.Values)
-			{
-				unit.Dispose();
-			}
-		}
-	}
-}

+ 3 - 2
Unity/Hotfix/Entity/UI.cs

@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using Model;
 using UnityEngine;
 
 namespace Hotfix
@@ -7,7 +8,7 @@ namespace Hotfix
 	{
 		public Scene Scene { get; set; }
 
-		public int UIType { get; }
+		public UIType UIType { get; }
 
 		public string Name
 		{
@@ -36,7 +37,7 @@ namespace Hotfix
 			this.GameObject.transform.SetAsFirstSibling();
 		}
 
-		public UI(Scene scene, int uiType, UI parent, GameObject gameObject): base(EntityType.UI)
+		public UI(Scene scene, UIType uiType, UI parent, GameObject gameObject): base(EntityType.UI)
 		{
 			this.Scene = scene;
 			this.UIType = uiType;

+ 0 - 41
Unity/Hotfix/HotfixEntry.cs

@@ -1,41 +0,0 @@
-using System;
-using Base;
-using Model;
-
-namespace Hotfix
-{
-	public static class HotfixEntry
-	{
-		public static void Start()
-		{
-			Login();
-		}
-
-		public static async void Login()
-		{
-			try
-			{
-				Game.Scene.AddComponent<MessageDispatherComponent, AppType>(AppType.Client);
-				ClientConfig clientConfig = Game.Scene.AddComponent<ClientConfigComponent>().Config.GetComponent<ClientConfig>();
-				NetOuterComponent networkComponent = Game.Scene.AddComponent<NetOuterComponent>();
-				using (Session session = networkComponent.Create(clientConfig.Address))
-				{
-					R2C_Login s2CLogin = await session.Call<C2R_Login, R2C_Login>(new C2R_Login { Account = "abcdef", Password = "111111" });
-					networkComponent.Remove(session.Id);
-
-					// 连接Gate
-					using (Session gateSession = networkComponent.Create(s2CLogin.Address))
-					{
-						await gateSession.Call<C2G_LoginGate, G2C_LoginGate>(new C2G_LoginGate(s2CLogin.Key));
-					}
-
-					Log.Info("连接Gate验证成功!");
-				}
-			}
-			catch (Exception e)
-			{
-				Log.Error(e.ToString());
-			}
-		}
-	}
-}

+ 4 - 5
Unity/Hotfix/Init.cs

@@ -5,7 +5,7 @@ namespace Hotfix
 {
 	public static class Init
 	{
-		private static void Start()
+		public static void Start()
 		{
 			try
 			{
@@ -16,16 +16,15 @@ namespace Hotfix
 				Hotfix.Scene.ModelScene.AddComponent<ResourcesComponent>();
 				Hotfix.Scene.ModelScene.AddComponent<BehaviorTreeComponent>();  
 				Hotfix.Scene.AddComponent<UIComponent>();
-				Hotfix.Scene.AddComponent<UnitComponent>();
 				Hotfix.Scene.GetComponent<EventComponent>().Run(EventIdType.InitSceneStart);
 			}
 			catch (Exception e)
 			{
-				Log.Error(e.ToString());
+				Log.Error(e.ToStr());
 			}
 		}
 
-		private static void Update()
+		public static void Update()
 		{
 			try
 			{
@@ -37,7 +36,7 @@ namespace Hotfix
 			}
 		}
 
-		private static void OnApplicationQuit()
+		public static void OnApplicationQuit()
 		{
 			Hotfix.Close();
 		}

+ 0 - 21
Unity/Hotfix/UI/UILobby/Factory/UILobbyFactory.cs

@@ -1,21 +0,0 @@
-using Model;
-using UnityEngine;
-
-namespace Hotfix
-{
-    [UIFactory(UIType.Lobby)]
-    public class UILobbyFactory : IUIFactory
-    {
-        public UI Create(Scene scene, int type, UI parent)
-        {
-			GameObject bundleGameObject = scene.ModelScene.GetComponent<ResourcesComponent>().GetAsset<GameObject>("uilobby", "Lobby");
-			GameObject lobby = UnityEngine.Object.Instantiate(bundleGameObject);
-			lobby.layer = LayerMask.NameToLayer(LayerNames.UI);
-			UI ui = new UI(scene, type, parent, lobby);
-			parent.Add(ui);
-
-	        ui.AddComponent<UILobbyComponent>();
-			return ui;
-        }
-    }
-}

+ 0 - 22
Unity/Hotfix/UI/UILobby/Factory/UILoginFactory.cs

@@ -1,22 +0,0 @@
-using Model;
-using UnityEngine;
-using Object = UnityEngine.Object;
-
-namespace Controller
-{
-    [UIFactory(UIType.UILogin)]
-    public class UILoginFactory : IUIFactory
-    {
-        public UI Create(Scene scene, UIType type, UI parent)
-        {
-            GameObject mainPrefab = Resources.Load<GameObject>("UI/LoginPanel");
-            mainPrefab = Object.Instantiate(mainPrefab);
-			mainPrefab.layer = LayerMask.NameToLayer(LayerNames.UI);
-
-			UI ui = new UI(scene, type, parent, mainPrefab);
-			parent.AddChild(ui);
-            
-            return ui;
-        }
-    }
-}

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor