DGJ 1 жил өмнө
parent
commit
5f353358d6
100 өөрчлөгдсөн 1465 нэмэгдсэн , 1460 устгасан
  1. 0 0
      Assets/Game/XRToolkit/ArtShow/Editor.meta
  2. 0 0
      Assets/Game/XRToolkit/ArtShow/Editor/ArtResConfEditor.cs
  3. 0 0
      Assets/Game/XRToolkit/ArtShow/Editor/ArtResConfEditor.cs.meta
  4. 0 0
      Assets/Game/XRToolkit/ArtShow/Editor/BuildConfigInspector.cs
  5. 0 0
      Assets/Game/XRToolkit/ArtShow/Editor/BuildConfigInspector.cs.meta
  6. 0 0
      Assets/Game/XRToolkit/ArtShow/Editor/BuildDeployWindow.cs
  7. 0 0
      Assets/Game/XRToolkit/ArtShow/Editor/BuildDeployWindow.cs.meta
  8. 0 38
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtResConf.cs
  9. 0 0
      Assets/HotUpdate/AVideoSlide.cs
  10. 0 0
      Assets/HotUpdate/AVideoSlide.cs.meta
  11. 0 0
      Assets/HotUpdate/ActivityMgr.cs
  12. 0 0
      Assets/HotUpdate/ActivityMgr.cs.meta
  13. 0 0
      Assets/HotUpdate/Art.meta
  14. 0 0
      Assets/HotUpdate/Art/ArtHandler.cs
  15. 0 0
      Assets/HotUpdate/Art/ArtHandler.cs.meta
  16. 0 0
      Assets/HotUpdate/Art/ArtInfo.cs
  17. 0 0
      Assets/HotUpdate/Art/ArtInfo.cs.meta
  18. 11 11
      Assets/HotUpdate/Art/ArtInfoMgr.cs
  19. 0 0
      Assets/HotUpdate/Art/ArtInfoMgr.cs.meta
  20. 0 0
      Assets/HotUpdate/Art/ArtInstance.cs
  21. 0 0
      Assets/HotUpdate/Art/ArtInstance.cs.meta
  22. 0 0
      Assets/HotUpdate/Art/ArtInstanceHandler.cs
  23. 0 0
      Assets/HotUpdate/Art/ArtInstanceHandler.cs.meta
  24. 0 0
      Assets/HotUpdate/Art/ArtPlay.cs
  25. 0 0
      Assets/HotUpdate/Art/ArtPlay.cs.meta
  26. 38 0
      Assets/HotUpdate/Art/ArtResConf.cs
  27. 0 0
      Assets/HotUpdate/Art/ArtResConf.cs.meta
  28. 0 0
      Assets/HotUpdate/Art/GoodsInfo.cs
  29. 0 0
      Assets/HotUpdate/Art/GoodsInfo.cs.meta
  30. 0 0
      Assets/HotUpdate/Art/Posture.cs
  31. 0 0
      Assets/HotUpdate/Art/Posture.cs.meta
  32. 0 0
      Assets/HotUpdate/AvatarList.cs
  33. 0 0
      Assets/HotUpdate/AvatarList.cs.meta
  34. 0 0
      Assets/HotUpdate/AvatarToggle.cs
  35. 0 0
      Assets/HotUpdate/AvatarToggle.cs.meta
  36. 0 0
      Assets/HotUpdate/BaseConfig.cs
  37. 0 0
      Assets/HotUpdate/BaseConfig.cs.meta
  38. 0 0
      Assets/HotUpdate/BaseList.cs
  39. 0 0
      Assets/HotUpdate/BaseList.cs.meta
  40. 0 0
      Assets/HotUpdate/BaseView.cs
  41. 0 0
      Assets/HotUpdate/BaseView.cs.meta
  42. 8 0
      Assets/HotUpdate/Blue.meta
  43. 7 7
      Assets/HotUpdate/Blue/AbstractController.cs
  44. 0 0
      Assets/HotUpdate/Blue/AbstractController.cs.meta
  45. 0 0
      Assets/HotUpdate/Blue/Action.meta
  46. 0 0
      Assets/HotUpdate/Blue/Action/EnterExitImageChange.cs
  47. 0 0
      Assets/HotUpdate/Blue/Action/EnterExitImageChange.cs.meta
  48. 0 0
      Assets/HotUpdate/Blue/Action/ResetTransform.cs
  49. 0 0
      Assets/HotUpdate/Blue/Action/ResetTransform.cs.meta
  50. 16 16
      Assets/HotUpdate/Blue/BlueObject.cs
  51. 0 0
      Assets/HotUpdate/Blue/BlueObject.cs.meta
  52. 21 21
      Assets/HotUpdate/Blue/BlueSingleton.cs
  53. 0 0
      Assets/HotUpdate/Blue/BlueSingleton.cs.meta
  54. 1064 1064
      Assets/HotUpdate/Blue/BlueVersion.cs
  55. 0 0
      Assets/HotUpdate/Blue/BlueVersion.cs.meta
  56. 0 0
      Assets/HotUpdate/Blue/Command.meta
  57. 27 27
      Assets/HotUpdate/Blue/Command/DeviceDetailsUpdataDataCommand.cs
  58. 0 0
      Assets/HotUpdate/Blue/Command/DeviceDetailsUpdataDataCommand.cs.meta
  59. 0 0
      Assets/HotUpdate/Blue/Command/NoEnterRoomCommand.cs
  60. 0 0
      Assets/HotUpdate/Blue/Command/NoEnterRoomCommand.cs.meta
  61. 0 0
      Assets/HotUpdate/Blue/Controller.meta
  62. 0 0
      Assets/HotUpdate/Blue/Controller/Item.meta
  63. 116 116
      Assets/HotUpdate/Blue/Controller/Item/DeviceInfo_Item.cs
  64. 0 0
      Assets/HotUpdate/Blue/Controller/Item/DeviceInfo_Item.cs.meta
  65. 36 36
      Assets/HotUpdate/Blue/Controller/Item/FaultPanel_Item.cs
  66. 0 0
      Assets/HotUpdate/Blue/Controller/Item/FaultPanel_Item.cs.meta
  67. 24 24
      Assets/HotUpdate/Blue/Controller/Item/RoomName_Item.cs
  68. 0 0
      Assets/HotUpdate/Blue/Controller/Item/RoomName_Item.cs.meta
  69. 54 54
      Assets/HotUpdate/Blue/Controller/Item/SearchPanel_Item.cs
  70. 0 0
      Assets/HotUpdate/Blue/Controller/Item/SearchPanel_Item.cs.meta
  71. 0 0
      Assets/HotUpdate/Blue/Controller/Item/ShowXunJian_UIItem.cs
  72. 0 0
      Assets/HotUpdate/Blue/Controller/Item/ShowXunJian_UIItem.cs.meta
  73. 0 0
      Assets/HotUpdate/Blue/Controller/Item/WarningInfoItem.cs
  74. 0 0
      Assets/HotUpdate/Blue/Controller/Item/WarningInfoItem.cs.meta
  75. 0 0
      Assets/HotUpdate/Blue/Controller/Item/XunJianUIItem_Texture.cs
  76. 0 0
      Assets/HotUpdate/Blue/Controller/Item/XunJianUIItem_Texture.cs.meta
  77. 1 4
      Assets/HotUpdate/Blue/Controller/LangChaoMinIo.cs
  78. 0 0
      Assets/HotUpdate/Blue/Controller/LangChaoMinIo.cs.meta
  79. 0 0
      Assets/HotUpdate/Blue/Controller/LangChaoRommMinIo.cs
  80. 0 0
      Assets/HotUpdate/Blue/Controller/LangChaoRommMinIo.cs.meta
  81. 0 0
      Assets/HotUpdate/Blue/Controller/ShowDeviceControle.cs
  82. 0 0
      Assets/HotUpdate/Blue/Controller/ShowDeviceControle.cs.meta
  83. 0 0
      Assets/HotUpdate/Blue/Controller/ShowHide_Toggle.cs
  84. 0 0
      Assets/HotUpdate/Blue/Controller/ShowHide_Toggle.cs.meta
  85. 0 0
      Assets/HotUpdate/Blue/Event.meta
  86. 11 11
      Assets/HotUpdate/Blue/Event/DeviceDetailsUpdataDataEvent.cs
  87. 0 0
      Assets/HotUpdate/Blue/Event/DeviceDetailsUpdataDataEvent.cs.meta
  88. 0 0
      Assets/HotUpdate/Blue/Event/RTCEvent.cs
  89. 0 0
      Assets/HotUpdate/Blue/Event/RTCEvent.cs.meta
  90. 0 0
      Assets/HotUpdate/Blue/Event/ShowDeviceEvent.cs
  91. 0 0
      Assets/HotUpdate/Blue/Event/ShowDeviceEvent.cs.meta
  92. 0 0
      Assets/HotUpdate/Blue/Event/SignallingEvent.cs
  93. 0 0
      Assets/HotUpdate/Blue/Event/SignallingEvent.cs.meta
  94. 31 31
      Assets/HotUpdate/Blue/GHZLangChao.cs
  95. 0 0
      Assets/HotUpdate/Blue/GHZLangChao.cs.meta
  96. 0 0
      Assets/HotUpdate/Blue/Info.meta
  97. 0 0
      Assets/HotUpdate/Blue/Info/ContactsInfo.cs
  98. 0 0
      Assets/HotUpdate/Blue/Info/ContactsInfo.cs.meta
  99. 0 0
      Assets/HotUpdate/Blue/Info/InspectionInfo.cs
  100. 0 0
      Assets/HotUpdate/Blue/Info/InspectionInfo.cs.meta

+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Editor.meta → Assets/Game/XRToolkit/ArtShow/Editor.meta


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Editor/ArtResConfEditor.cs → Assets/Game/XRToolkit/ArtShow/Editor/ArtResConfEditor.cs


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Editor/ArtResConfEditor.cs.meta → Assets/Game/XRToolkit/ArtShow/Editor/ArtResConfEditor.cs.meta


+ 0 - 0
Assets/Game/XRToolkit/Builder/Editor/BuildConfigInspector.cs → Assets/Game/XRToolkit/ArtShow/Editor/BuildConfigInspector.cs


+ 0 - 0
Assets/Game/XRToolkit/Builder/Editor/BuildConfigInspector.cs.meta → Assets/Game/XRToolkit/ArtShow/Editor/BuildConfigInspector.cs.meta


+ 0 - 0
Assets/Game/XRToolkit/Builder/Editor/BuildDeployWindow.cs → Assets/Game/XRToolkit/ArtShow/Editor/BuildDeployWindow.cs


+ 0 - 0
Assets/Game/XRToolkit/Builder/Editor/BuildDeployWindow.cs.meta → Assets/Game/XRToolkit/ArtShow/Editor/BuildDeployWindow.cs.meta


+ 0 - 38
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtResConf.cs

@@ -1,38 +0,0 @@
-using System.Collections.Generic;
-#if UNITY_EDITOR
-using UnityEditor;
-#endif
-using UnityEngine;
-using XRTool.Util;
-
-namespace ShadowStudio.Model
-{
-    public class ArtResConf : ScriptableObject
-    {
-        public List<Object> resModelList;
-        public ArtType artType;
-        public InstaceType instaceType = InstaceType.References;
-#if UNITY_EDITOR
-
-        [MenuItem("Assets/Create/DataBase/ArtResConf", false, 0)]
-        static void CreateDynamicConf()
-        {
-            Object obj = Selection.activeObject;
-            if (obj)
-            {
-                string path = AssetDatabase.GetAssetPath(obj);
-                ArtResConf bullet = CreateInstance<ArtResConf>();
-                if (bullet)
-                {
-                    string confName = UnityUtil.TryGetName<ArtResConf>(path);
-                    AssetDatabase.CreateAsset(bullet, confName);
-                }
-                else
-                {
-                    Debug.Log(typeof(ArtResConf) + " is null");
-                }
-            }
-        }
-#endif
-    }
-}

+ 0 - 0
Assets/LangChaoRTC/AVideoSlide.cs → Assets/HotUpdate/AVideoSlide.cs


+ 0 - 0
Assets/LangChaoRTC/AVideoSlide.cs.meta → Assets/HotUpdate/AVideoSlide.cs.meta


+ 0 - 0
Assets/LangChaoRTC/Remote/ShowOffice/ActivityMgr.cs → Assets/HotUpdate/ActivityMgr.cs


+ 0 - 0
Assets/LangChaoRTC/Remote/ShowOffice/ActivityMgr.cs.meta → Assets/HotUpdate/ActivityMgr.cs.meta


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art.meta → Assets/HotUpdate/Art.meta


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtHandler.cs → Assets/HotUpdate/Art/ArtHandler.cs


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtHandler.cs.meta → Assets/HotUpdate/Art/ArtHandler.cs.meta


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfo.cs → Assets/HotUpdate/Art/ArtInfo.cs


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfo.cs.meta → Assets/HotUpdate/Art/ArtInfo.cs.meta


+ 11 - 11
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfoMgr.cs → Assets/HotUpdate/Art/ArtInfoMgr.cs

@@ -7,7 +7,7 @@ using System.Collections;
 using System.Collections.Generic;
 using System.IO;
 #if UNITY_EDITOR
-using UnityEditor;
+
 #endif
 using UnityEngine;
 using XRTool.Util;
@@ -162,16 +162,16 @@ namespace ShadowStudio.Model
                     {
                         info.Url = url;
                     }
-                    else if (references == InstaceType.ResourceLoad)
-                    {
-#if UNITY_EDITOR
-                        string path = AssetDatabase.GetAssetPath(obj);
-                        int index = path.LastIndexOf("Resources");
-                        path = path.Substring((index += "Resources".Length + 1), path.Length - index - 1);
-                        path = path.Replace(Path.GetExtension(path), "");
-                        info.Url = path;
-#endif
-                    }
+//                    else if (references == InstaceType.ResourceLoad)
+//                    {
+//#if UNITY_EDITOR
+//                        string path = AssetDatabase.GetAssetPath(obj);
+//                        int index = path.LastIndexOf("Resources");
+//                        path = path.Substring((index += "Resources".Length + 1), path.Length - index - 1);
+//                        path = path.Replace(Path.GetExtension(path), "");
+//                        info.Url = path;
+//#endif
+//                    }
                     info.Version = Application.version;
                     table.InsertData(info);
                     if (!ArtInfoContains(artid))

+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfoMgr.cs.meta → Assets/HotUpdate/Art/ArtInfoMgr.cs.meta


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstance.cs → Assets/HotUpdate/Art/ArtInstance.cs


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstance.cs.meta → Assets/HotUpdate/Art/ArtInstance.cs.meta


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstanceHandler.cs → Assets/HotUpdate/Art/ArtInstanceHandler.cs


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstanceHandler.cs.meta → Assets/HotUpdate/Art/ArtInstanceHandler.cs.meta


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtPlay.cs → Assets/HotUpdate/Art/ArtPlay.cs


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtPlay.cs.meta → Assets/HotUpdate/Art/ArtPlay.cs.meta


+ 38 - 0
Assets/HotUpdate/Art/ArtResConf.cs

@@ -0,0 +1,38 @@
+using System.Collections.Generic;
+#if UNITY_EDITOR
+//using UnityEditor;
+#endif
+using UnityEngine;
+using XRTool.Util;
+
+namespace ShadowStudio.Model
+{
+    public class ArtResConf : ScriptableObject
+    {
+        public List<Object> resModelList;
+        public ArtType artType;
+        public InstaceType instaceType = InstaceType.References;
+#if UNITY_EDITOR
+
+        //[MenuItem("Assets/Create/DataBase/ArtResConf", false, 0)]
+        //static void CreateDynamicConf()
+        //{
+        //    Object obj = Selection.activeObject;
+        //    if (obj)
+        //    {
+        //        string path = AssetDatabase.GetAssetPath(obj);
+        //        ArtResConf bullet = CreateInstance<ArtResConf>();
+        //        if (bullet)
+        //        {
+        //            string confName = UnityUtil.TryGetName<ArtResConf>(path);
+        //            AssetDatabase.CreateAsset(bullet, confName);
+        //        }
+        //        else
+        //        {
+        //            Debug.Log(typeof(ArtResConf) + " is null");
+        //        }
+        //    }
+        //}
+#endif
+    }
+}

+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtResConf.cs.meta → Assets/HotUpdate/Art/ArtResConf.cs.meta


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/GoodsInfo.cs → Assets/HotUpdate/Art/GoodsInfo.cs


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/GoodsInfo.cs.meta → Assets/HotUpdate/Art/GoodsInfo.cs.meta


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Posture.cs → Assets/HotUpdate/Art/Posture.cs


+ 0 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Posture.cs.meta → Assets/HotUpdate/Art/Posture.cs.meta


+ 0 - 0
Assets/LangChaoRTC/Remote/ShowOffice/Avatar/AvatarList.cs → Assets/HotUpdate/AvatarList.cs


+ 0 - 0
Assets/LangChaoRTC/Remote/ShowOffice/Avatar/AvatarList.cs.meta → Assets/HotUpdate/AvatarList.cs.meta


+ 0 - 0
Assets/LangChaoRTC/Remote/ShowOffice/Avatar/AvatarToggle.cs → Assets/HotUpdate/AvatarToggle.cs


+ 0 - 0
Assets/LangChaoRTC/Remote/ShowOffice/Avatar/AvatarToggle.cs.meta → Assets/HotUpdate/AvatarToggle.cs.meta


+ 0 - 0
Assets/LangChaoRTC/Remote/Scripts/BaseConfig.cs → Assets/HotUpdate/BaseConfig.cs


+ 0 - 0
Assets/LangChaoRTC/Remote/Scripts/BaseConfig.cs.meta → Assets/HotUpdate/BaseConfig.cs.meta


+ 0 - 0
Assets/LangChaoRTC/Remote/Scripts/BaseList.cs → Assets/HotUpdate/BaseList.cs


+ 0 - 0
Assets/LangChaoRTC/Remote/Scripts/BaseList.cs.meta → Assets/HotUpdate/BaseList.cs.meta


+ 0 - 0
Assets/LangChaoRTC/Remote/Scripts/BaseView.cs → Assets/HotUpdate/BaseView.cs


+ 0 - 0
Assets/LangChaoRTC/Remote/Scripts/BaseView.cs.meta → Assets/HotUpdate/BaseView.cs.meta


+ 8 - 0
Assets/HotUpdate/Blue.meta

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

+ 7 - 7
Assets/Game/Blue/AbstractController.cs → Assets/HotUpdate/Blue/AbstractController.cs

@@ -1,7 +1,7 @@
-using Blue;
-using UnityEngine;
-
-public class AbstractController : MonoBehaviour,IController
-{
-
-}
+using Blue;
+using UnityEngine;
+
+public class AbstractController : MonoBehaviour,IController
+{
+
+}

+ 0 - 0
Assets/Game/Blue/AbstractController.cs.meta → Assets/HotUpdate/Blue/AbstractController.cs.meta


+ 0 - 0
Assets/Game/Blue/Action.meta → Assets/HotUpdate/Blue/Action.meta


+ 0 - 0
Assets/Game/Blue/Action/EnterExitImageChange.cs → Assets/HotUpdate/Blue/Action/EnterExitImageChange.cs


+ 0 - 0
Assets/Game/Blue/Action/EnterExitImageChange.cs.meta → Assets/HotUpdate/Blue/Action/EnterExitImageChange.cs.meta


+ 0 - 0
Assets/Game/Blue/Action/ResetTransform.cs → Assets/HotUpdate/Blue/Action/ResetTransform.cs


+ 0 - 0
Assets/Game/Blue/Action/ResetTransform.cs.meta → Assets/HotUpdate/Blue/Action/ResetTransform.cs.meta


+ 16 - 16
Assets/Game/Blue/ScriptableObject/BlueObject.cs → Assets/HotUpdate/Blue/BlueObject.cs

@@ -1,17 +1,17 @@
-using UnityEngine;
-
-[CreateAssetMenu(fileName ="PrefabsAsset",menuName ="ScriptableObject/BluePrefabs",order = 1 )]
-public class BlueObject : ScriptableObject
-{
-    //可以包含更多的数据,信息
-    public GameObject RoomName_Item; // ShowChoose 面板 -- 所在机房面板 ---子物体
-    public GameObject SearchPanel_Item; // ShowDaoHang 面板 -- 搜索面板 ---子物体
-    public GameObject FaultPanel_Item; // ShowDaoHang 面板 -- 故障面板 ---子物体
-    public GameObject WarningInfoItem; // ShowDeviceDetails 面板 -- WarningInfo ---子物体
-
-    public GameObject ShowDeviceControle; // ShowDeviceDetails 面板 -- WarningInfo ---子物体
-
-    public float ZeroDofPosX;
-    public float ZeroDofPosY;
-    public float ZeroDofPosZ;
+using UnityEngine;
+
+[CreateAssetMenu(fileName ="PrefabsAsset",menuName ="ScriptableObject/BluePrefabs",order = 1 )]
+public class BlueObject : ScriptableObject
+{
+    //可以包含更多的数据,信息
+    public GameObject RoomName_Item; // ShowChoose 面板 -- 所在机房面板 ---子物体
+    public GameObject SearchPanel_Item; // ShowDaoHang 面板 -- 搜索面板 ---子物体
+    public GameObject FaultPanel_Item; // ShowDaoHang 面板 -- 故障面板 ---子物体
+    public GameObject WarningInfoItem; // ShowDeviceDetails 面板 -- WarningInfo ---子物体
+
+    public GameObject ShowDeviceControle; // ShowDeviceDetails 面板 -- WarningInfo ---子物体
+
+    public float ZeroDofPosX;
+    public float ZeroDofPosY;
+    public float ZeroDofPosZ;
 }

+ 0 - 0
Assets/Game/Blue/ScriptableObject/BlueObject.cs.meta → Assets/HotUpdate/Blue/BlueObject.cs.meta


+ 21 - 21
Assets/Game/Blue/0.F/BlueSingleton.cs → Assets/HotUpdate/Blue/BlueSingleton.cs

@@ -1,22 +1,22 @@
-namespace Blue
-{
-    /// <summary>
-    /// 单例模式的基类
-    /// </summary>
-    public class BlueSingleton<T> where T : BlueSingleton<T>, new()
-    {
-        private static T instance;
-
-        public static T Instance
-        {
-            get
-            {
-                if (instance == null)
-                {
-                    instance = new T();
-                }
-                return instance;
-            }
-        }
-    }
+namespace Blue
+{
+    /// <summary>
+    /// 单例模式的基类
+    /// </summary>
+    public class BlueSingleton<T> where T : BlueSingleton<T>, new()
+    {
+        private static T instance;
+
+        public static T Instance
+        {
+            get
+            {
+                if (instance == null)
+                {
+                    instance = new T();
+                }
+                return instance;
+            }
+        }
+    }
 }

+ 0 - 0
Assets/Game/Blue/0.F/BlueSingleton.cs.meta → Assets/HotUpdate/Blue/BlueSingleton.cs.meta


+ 1064 - 1064
Assets/Game/Blue/0.F/BlueVersion.cs → Assets/HotUpdate/Blue/BlueVersion.cs

@@ -1,1065 +1,1065 @@
-using System.Threading.Tasks;
-using System.Collections.Generic;
-using System;
-using UnityEngine;
-using System.Reflection;
-
-/*
-修改第三版
-将事件从IArchitecture中剥离
-*/
-namespace Blue
-{
-
-    #region  Architecture
-
-    /// <summary>
-    /// 所有功能在 IArchitecture 接口中定义
-    /// 1. 注册/获取Service、Model、Utility;
-    /// 2. 发送命令、事件、查询
-    /// 3. 注册、取消注册事件
-    /// </summary>
-    public interface IArchitecture
-    {
-        void SetArchitecture(IArchitecture instance);
-        void InitArchitecture();
-
-        void RegisterService<T>(T service) where T : IService;
-        void RegisterModel<T>(T Model) where T : IModel;
-        void RegisterUtility<T>(T utility) where T : IUtility;
-
-        T GetService<T>() where T : class, IService;
-        T GetModel<T>() where T : class, IModel;
-        T GetUtility<T>() where T : class, IUtility;
-    }
-
-    public abstract class AbstractArchitecture<T> : IArchitecture where T : AbstractArchitecture<T>, new()
-    {
-        private IOCContainer mContainer = new IOCContainer(); // 将类型、对象存储进IOC容器
-        private ICommandHandler commandHandler = new DefaultCommandHandler();
-        private IQueryHandler queryHandler = new DefaultQueryHandler();
-        private ITypeEventSystem mTypeEventSystem = new TypeEventSystem();
-        private HashSet<IService> mService;
-        private HashSet<IModel> mModels;
-
-        protected abstract void Init();
-
-        private static IArchitecture mArchitectureInstance;
-        void IArchitecture.SetArchitecture(IArchitecture instance)
-        {
-            mArchitectureInstance = instance;
-            CanGetModelExtension.SetArchitecture(mArchitectureInstance);
-            CanGetServiceExtension.SetArchitecture(mArchitectureInstance);
-            CanGetUtilityExtension.SetArchitecture(mArchitectureInstance);
-
-            CanSendCommandExtension.SetCommandHandler(commandHandler);
-            CanSendQueryExtension.SetQueryHandler(queryHandler);
-
-            CanRegisterEventExtension.SetTypeEventSystem(mTypeEventSystem);
-            CanSendEventExtension.SetTypeEventSystem(mTypeEventSystem);
-        }
-        void IArchitecture.InitArchitecture()
-        {
-            StartInit();
-            FinishInit();
-        }
-        private void StartInit()
-        {
-            mService = new HashSet<IService>();
-            mModels = new HashSet<IModel>();
-            Init();
-
-            foreach (var architectureModel in mModels)
-            {
-                architectureModel.OnInit();
-            }
-            foreach (var service in mService)
-            {
-                service.OnInit();
-            }
-        }
-        private void FinishInit()
-        {
-            mService.Clear();
-            mModels.Clear();
-            mService = null;
-            mModels = null;
-        }
-
-        public void RegisterService<TService>(TService service) where TService : IService
-        {
-            mContainer.Register<TService>(service);
-
-            mService.Add(service);
-        }
-        public void RegisterModel<TModel>(TModel model) where TModel : IModel
-        {
-            mContainer.Register<TModel>(model);
-
-            mModels.Add(model);
-        }
-        public void RegisterUtility<TUtility>(TUtility utility) where TUtility : IUtility
-        {
-            mContainer.Register<TUtility>(utility);
-        }
-
-        public TService GetService<TService>() where TService : class, IService
-        {
-            return mContainer.Get<TService>();
-        }
-        public TModel GetModel<TModel>() where TModel : class, IModel
-        {
-            return mContainer.Get<TModel>();
-        }
-        public TUtility GetUtility<TUtility>() where TUtility : class, IUtility
-        {
-            return mContainer.Get<TUtility>();
-        }
-    }
-
-    /// <summary>
-    /// 启动 Architecture
-    /// </summary>
-    internal sealed class ArchitectureInitiator
-    {
-        private ArchitectureInitiator() { }
-        private static ArchitectureInitiator mInstance;
-
-        private IArchitecture architectureInstance = null; // Architecture 实例
-        private Type architectureType = typeof(IArchitecture);
-        private bool architectureInited; // Architecture 是否初始化完成
-
-        [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)]
-        private static void Initiate()
-        {
-            mInstance = new ArchitectureInitiator();
-
-            Type[] typeArr = Assembly.GetExecutingAssembly().GetTypes(); // 获取正在执行的程序集类型数组
-            for (int i = 0; i < typeArr.Length; i++)
-            {
-                Type tmpType = typeArr[i];
-                if (!tmpType.IsInterface)
-                {
-                    if (mInstance.IsArchitecture(tmpType))
-                    {
-                        mInstance.CreateArchitectureInstance(tmpType);
-                    }
-                }
-            }
-            mInstance.RegisterArchitecture();
-            mInstance.InitArchitecture();
-        }
-        private void RegisterArchitecture()
-        {
-            if (architectureInstance != null)
-            {
-                architectureInstance.SetArchitecture(architectureInstance);
-            }
-        }
-
-        private void InitArchitecture()
-        {
-            if (architectureInstance != null)
-            {
-                architectureInstance.InitArchitecture();
-            }
-        }
-
-
-        private bool IsArchitecture(Type tmpType)
-        {
-            if (architectureInited)
-            {
-                return false;
-            }
-            if (tmpType.IsAbstract)
-            {
-                return false;
-            }
-            return architectureType.IsAssignableFrom(tmpType); // 确定指定类型 c 的实例是否能分配给当前类型的变量
-        }
-
-        private void CreateArchitectureInstance(Type archiType)
-        {
-            if (architectureInstance == null)
-            {
-                architectureInstance = (IArchitecture)Activator.CreateInstance(archiType);
-                architectureInited = true;
-            }
-            else
-            {
-                throw new Exception("More than one Architecture sub-class in the application,it should be only one!");
-            }
-        }
-    }
-
-    public interface IOnEvent<T>
-    {
-        void OnEvent(T e);
-    }
-
-    public static class OnGlobalEventExtension
-    {
-        public static IUnRegister RegisterEvent<T>(this IOnEvent<T> self) where T : struct, IEvent
-        {
-            return TypeEventSystem.Global.Register<T>(self.OnEvent);
-        }
-
-        public static void UnRegisterEvent<T>(this IOnEvent<T> self) where T : struct, IEvent
-        {
-            TypeEventSystem.Global.UnRegister<T>(self.OnEvent);
-        }
-    }
-
-    #endregion
-
-    #region Controller
-
-    public interface IController : ICanGetUtility, ICanGetService, ICanGetModel,
-                                   ICanRegisterEvent, ICanSendQuery, ICanSendCommand
-    {
-
-    }
-
-    #endregion
-
-    #region  Service
-
-    public interface IService : ICanGetService, ICanGetModel, ICanGetUtility,
-                                ICanRegisterEvent, ICanSendEvent
-    {
-        void OnInit();
-    }
-
-    #endregion
-
-    #region  Model
-
-    public interface IModel : ICanGetUtility, ICanSendEvent
-    {
-        void OnInit();
-    }
-
-    #endregion
-
-    #region  Utility
-
-    public interface IUtility
-    {
-
-    }
-
-    #endregion
-
-    #region  Command
-
-    public interface ICommand : ICanGetService, ICanGetModel, ICanGetUtility,
-                                ICanSendEvent, ICanSendCommand, ICanSendQuery
-    {
-        void OnExcute();
-    }
-    public interface ICommand<T> : ICanGetService, ICanGetModel, ICanGetUtility,
-                                   ICanSendEvent, ICanSendCommand, ICanSendQuery
-    {
-        T OnExcute();
-    }
-
-    public interface ICommandHandler
-    {
-        void ExcuteCommand(ICommand command);
-        void ExcuteCommand<T>() where T : ICommand, new();
-        T ExcuteCommand<T>(ICommand<T> command);
-    }
-
-    public class DefaultCommandHandler : ICommandHandler
-    {
-        public void ExcuteCommand(ICommand command)
-        {
-            command.OnExcute();
-        }
-
-        public void ExcuteCommand<T>() where T : ICommand, new()
-        {
-            ExcuteCommand(new T());
-        }
-
-        public T ExcuteCommand<T>(ICommand<T> command)
-        {
-            return command.OnExcute();
-        }
-    }
-
-    #endregion
-
-    #region  Query
-
-    public interface IQuery<T> : ICanGetModel, ICanGetService, ICanSendQuery
-    {
-        T DoQuery();
-    }
-    public interface IQueryAsync : ICanGetModel, ICanGetService, ICanSendQuery
-    {
-        void DoQueryAsync<T>(Action<T> onQueryCompleted);
-    }
-    public interface IQueryResult<T>
-    {
-        void OnQuerySucceed(Action<T> onQuerySucceed);
-        void OnQueryFailed(Action onQueryFailed);
-    }
-    public interface IQueryHandler
-    {
-        T DoQuery<T>(IQuery<T> query);
-        K DoQuery<T, K>() where T : IQuery<K>, new();
-
-        IQueryResult<T> DoQueryAsync<T>(IQuery<T> query);
-        IQueryResult<K> DoQueryAsync<T, K>() where T : IQuery<K>, new();
-    }
-
-    public class DefaultQueryHandler : IQueryHandler
-    {
-        public T DoQuery<T>(IQuery<T> query)
-        {
-            return query.DoQuery();
-        }
-
-        public K DoQuery<T, K>() where T : IQuery<K>, new()
-        {
-            return DoQuery(new T());
-        }
-
-        public IQueryResult<T> DoQueryAsync<T>(IQuery<T> query)
-        {
-            DefaultQueryResult<T> queryResult = new DefaultQueryResult<T>();
-            var queryTask = Task.Run(() =>
-            {
-                return query.DoQuery();
-            });
-            var awaiter = queryTask.GetAwaiter();
-            awaiter.OnCompleted(() =>
-            {
-                if (queryTask.IsFaulted | queryTask.IsCanceled)
-                {
-                    queryResult.TriggerFailed();
-                }
-                else
-                {
-                    queryResult.TriggerSuccess(awaiter.GetResult());
-                }
-            });
-            return queryResult;
-        }
-
-        public IQueryResult<K> DoQueryAsync<T, K>() where T : IQuery<K>, new()
-        {
-            return DoQueryAsync(new T());
-        }
-    }
-
-    public class DefaultQueryResult<T> : IQueryResult<T>
-    {
-        private Action<T> mOnQuerySucceed;
-        private Action mOnQueryFailed;
-
-        public void OnQuerySucceed(Action<T> onQuerySucceed)
-        {
-            mOnQuerySucceed += onQuerySucceed;
-        }
-        public void OnQueryFailed(Action onQueryFailed)
-        {
-            mOnQueryFailed += onQueryFailed;
-        }
-        public void TriggerSuccess(T result)
-        {
-            mOnQuerySucceed?.Invoke(result);
-        }
-        public void TriggerFailed()
-        {
-            mOnQueryFailed?.Invoke();
-        }
-    }
-    #endregion
-
-    #region Rule
-
-    /// <summary>
-    /// 能够 GetModel 的接口
-    /// </summary>
-    public interface ICanGetModel
-    {
-    }
-
-    /// <summary>
-    /// ICanGetModel 的静态扩展 GetModel
-    /// </summary>
-    public static class CanGetModelExtension
-    {
-        public static T GetModel<T>(this ICanGetModel self) where T : class, IModel
-        {
-            return _architecture.GetModel<T>();
-        }
-
-        private static IArchitecture _architecture;
-        public static void SetArchitecture(IArchitecture architecture)
-        {
-            _architecture = architecture;
-        }
-    }
-    /// <summary>
-    /// 能够 GetService 的接口
-    /// </summary>
-    public interface ICanGetService
-    {
-    }
-
-    /// <summary>
-    /// ICanGetService 的静态扩展 GetService
-    /// </summary>
-    public static class CanGetServiceExtension
-    {
-        public static T GetService<T>(this ICanGetService self) where T : class, IService
-        {
-            return _architecture.GetService<T>();
-        }
-
-        private static IArchitecture _architecture;
-        public static void SetArchitecture(IArchitecture architecture)
-        {
-            _architecture = architecture;
-        }
-    }
-
-    /// <summary>
-    /// 能够 GetUtility 的接口
-    /// </summary>
-    public interface ICanGetUtility
-    {
-    }
-
-    /// <summary>
-    /// ICanGetUtility 的静态扩展 GetUtility
-    /// </summary>
-    public static class CanGetUtilityExtension
-    {
-        public static T GetUtility<T>(this ICanGetUtility self) where T : class, IUtility
-        {
-            return _architecture.GetUtility<T>();
-        }
-
-        private static IArchitecture _architecture;
-        public static void SetArchitecture(IArchitecture architecture)
-        {
-            _architecture = architecture;
-        }
-    }
-
-    /// <summary>
-    /// 能够 RegisterEvent 的接口
-    /// </summary>
-    public interface ICanRegisterEvent
-    {
-    }
-
-    /// <summary>
-    /// ICanRegisterEvent 的静态扩展 RegisterEvent
-    /// </summary>
-    public static class CanRegisterEventExtension
-    {
-        public static IUnRegister RegisterEvent<T>(this ICanRegisterEvent self, Action<T> onEvent) where T : IEvent
-        {
-            if (typeEventSystem == null) return null;
-            return typeEventSystem.Register<T>(onEvent);
-        }
-
-        public static void UnRegisterEvent<T>(this ICanRegisterEvent self, Action<T> onEvent) where T : IEvent
-        {
-            typeEventSystem.UnRegister<T>(onEvent);
-        }
-
-        private static ITypeEventSystem typeEventSystem;
-        public static void SetTypeEventSystem(ITypeEventSystem mTypeEventSystem)
-        {
-            typeEventSystem = mTypeEventSystem;
-        }
-    }
-
-    /// <summary>
-    /// 能够 SendCommand 的接口
-    /// </summary>
-    public interface ICanSendCommand
-    {
-    }
-
-    /// <summary>
-    /// ICanSendCommand 的静态扩展 SendCommand
-    /// </summary>
-    public static class CanSendCommandExtension
-    {
-        public static void SendCommand<T>(this ICanSendCommand self) where T : ICommand, new()
-        {
-            mCommandHandler.ExcuteCommand<T>();
-        }
-
-        public static void SendCommand<T>(this ICanSendCommand self, T command) where T : ICommand
-        {
-            mCommandHandler.ExcuteCommand(command);
-        }
-
-        public static T SendCommand<T>(this ICanSendCommand self, ICommand<T> command)
-        {
-            return mCommandHandler.ExcuteCommand(command);
-        }
-
-        private static ICommandHandler mCommandHandler;
-        public static void SetCommandHandler(ICommandHandler commandHandler)
-        {
-            mCommandHandler = commandHandler;
-        }
-    }
-
-    /// <summary>
-    /// 能够 SendEvent 的接口
-    /// </summary>
-    public interface ICanSendEvent
-    {
-    }
-
-    /// <summary>
-    /// ICanSendEvent 的静态扩展 SendEvent
-    /// </summary>
-    public static class CanSendEventExtension
-    {
-        public static void SendEvent<T>(this ICanSendEvent self) where T : IEvent, new()
-        {
-            typeEventSystem.Send<T>();
-        }
-
-        public static void SendEvent<T>(this ICanSendEvent self, T e) where T : IEvent
-        {
-            typeEventSystem.Send<T>(e);
-        }
-
-        private static ITypeEventSystem typeEventSystem;
-        public static void SetTypeEventSystem(ITypeEventSystem mTypeEventSystem)
-        {
-            typeEventSystem = mTypeEventSystem;
-        }
-    }
-
-    /// <summary>
-    /// 能够 SendQuery 的接口
-    /// </summary>
-    public interface ICanSendQuery
-    {
-    }
-
-    /// <summary>
-    /// ICanSendQuery 的静态扩展 SendQuery
-    /// </summary>
-    public static class CanSendQueryExtension
-    {
-        public static T SendQuery<T>(this ICanSendQuery self, IQuery<T> queryInstance)
-        {
-            return _queryHandler.DoQuery<T>(queryInstance);
-        }
-        public static K SendQuery<T, K>(this ICanSendQuery self) where T : IQuery<K>, new()
-        {
-            return _queryHandler.DoQuery<T, K>();
-        }
-        public static IQueryResult<T> SendQueryAsync<T>(this ICanSendQuery self, IQuery<T> queryInstance)
-        {
-            return _queryHandler.DoQueryAsync<T>(queryInstance);
-        }
-        public static IQueryResult<K> SendQueryAsync<T, K>(this ICanSendQuery self) where T : IQuery<K>, new()
-        {
-            return _queryHandler.DoQueryAsync<T, K>();
-        }
-        private static IQueryHandler _queryHandler;
-        public static void SetQueryHandler(IQueryHandler queryHandler)
-        {
-            _queryHandler = queryHandler;
-        }
-    }
-
-    #endregion
-
-    #region  TypeEventSystem
-
-    /// <summary>
-    /// 取消监听接口
-    /// </summary>
-    public interface IUnRegister
-    {
-        void UnRegister();
-    }
-
-    /// <summary>
-    /// 取消监听列表接口
-    /// </summary>
-    public interface IUnRegisterList
-    {
-        List<IUnRegister> UnRegistersList { get; }
-    }
-
-    /// <summary>
-    /// 取消监听列表接口的静态扩展
-    /// 【IUnRegister 添加进 IUnRegisterList】
-    /// 【IUnRegisterList全部取消监听】
-    /// </summary>
-    public static class IUnRegisterListExtension
-    {
-        public static void AddToUnRegisterList(this IUnRegister self, IUnRegisterList unRegisterList)
-        {
-            unRegisterList.UnRegistersList.Add(self);
-        }
-
-        public static void UnRegisterAll(this IUnRegisterList self)
-        {
-            foreach (IUnRegister unRegister in self.UnRegistersList)
-            {
-                unRegister.UnRegister();
-            }
-            self.UnRegistersList.Clear();
-        }
-    }
-
-    /// <summary>
-    /// 取消监听的类
-    /// </summary>
-    public struct CustomUnRegister : IUnRegister
-    {
-        private Action mOnUnregister { get; set; }
-
-        public CustomUnRegister(Action onUnRegsiter)
-        {
-            mOnUnregister = onUnRegsiter;
-        }
-
-        public void UnRegister()
-        {
-            mOnUnregister?.Invoke();
-            mOnUnregister = null;
-        }
-    }
-
-    /// <summary>
-    /// 物体销毁时触发取消监听
-    /// </summary>
-    public class UnRegisterOnDestroyTrigger : MonoBehaviour
-    {
-        private readonly HashSet<IUnRegister> mUnRegisters = new HashSet<IUnRegister>();
-
-        public void AddUnRegister(IUnRegister unRegister)
-        {
-            mUnRegisters.Add(unRegister);
-        }
-
-        public void RemoveUnRegister(IUnRegister unRegister)
-        {
-            mUnRegisters.Remove(unRegister);
-        }
-
-        private void OnDestroy()
-        {
-            foreach (IUnRegister unRegister in mUnRegisters)
-            {
-                unRegister.UnRegister();
-            }
-            mUnRegisters.Clear();
-        }
-    }
-
-    /// <summary>
-    /// 取消监听的静态扩展
-    /// 【物体销毁时触发取消监听】
-    /// 【组件所属物体销毁时触发取消监听】
-    /// </summary>
-    public static class UnRegisterExtension
-    {
-        /// <summary>
-        /// 物体:物体销毁时触发取消监听
-        /// </summary>
-        /// <param name="unRegister">取消监听的接口</param>
-        /// <param name="component">物体对象</param>
-        /// <returns>取消监听的接口</returns>
-        public static IUnRegister UnRegisterWhenGameObjectDestroyed(this IUnRegister unRegister, GameObject go)
-        {
-            UnRegisterOnDestroyTrigger trigger = go.GetComponent<UnRegisterOnDestroyTrigger>();
-
-            if (!trigger)
-            {
-                trigger = go.AddComponent<UnRegisterOnDestroyTrigger>();
-            }
-
-            trigger.AddUnRegister(unRegister);
-
-            return unRegister;
-        }
-
-        /// <summary>
-        /// 组件:物体销毁时触发取消监听
-        /// </summary>
-        /// <param name="unRegister">取消监听的接口</param>
-        /// <param name="component">组件对象</param>
-        /// <returns>取消监听的接口</returns>
-        public static IUnRegister UnRegisterWhenGameObjectDestroyed<T>(this IUnRegister unRegister, T component) where T : Component
-        {
-            return unRegister.UnRegisterWhenGameObjectDestroyed(component.gameObject);
-        }
-    }
-
-    public interface ITypeEventSystem
-    {
-        IUnRegister Register<T>(Action<T> onEvent) where T : IEvent;
-        void UnRegister<T>(Action<T> onEvent) where T : IEvent;
-        void Send<T>() where T : IEvent, new();
-        void Send<T>(T e) where T : IEvent;
-    }
-    public class TypeEventSystem : ITypeEventSystem
-    {
-        private readonly EasyEvents mEvents = new EasyEvents();
-        public static readonly TypeEventSystem Global = new TypeEventSystem();
-
-        public void Send<T>() where T : IEvent, new()
-        {
-            mEvents.GetEvent<EasyEvent<T>>()?.Trigger(new T());
-        }
-
-        public void Send<T>(T e) where T : IEvent
-        {
-            mEvents.GetEvent<EasyEvent<T>>()?.Trigger(e);
-        }
-
-        public IUnRegister Register<T>(Action<T> onEvent) where T : IEvent
-        {
-            var e = mEvents.GetOrAddEvent<EasyEvent<T>>();
-            return e.Register(onEvent);
-        }
-
-        public void UnRegister<T>(Action<T> onEvent) where T : IEvent
-        {
-            var e = mEvents.GetEvent<EasyEvent<T>>();
-            if (e != null)
-            {
-                e.UnRegister(onEvent);
-            }
-        }
-    }
-
-    #endregion
-
-    #region  IOC
-
-    /// <summary>
-    /// IOC 容器 ,将类型对应的对象存储进字典
-    /// 【注册 + 获取】
-    /// </summary>
-    public class IOCContainer
-    {
-        private Dictionary<Type, object> mInstances = new Dictionary<Type, object>();
-
-        /// <summary>
-        /// IOC 容器注册方法
-        /// </summary>
-        /// <param name="instance">实例</param>
-        /// <typeparam name="T">指定类型</typeparam>
-        public void Register<T>(T instance)
-        {
-            Type key = typeof(T);
-
-            if (mInstances.ContainsKey(key))
-            {
-                mInstances[key] = instance;
-            }
-            else
-            {
-                mInstances.Add(key, instance);
-            }
-        }
-
-        /// <summary>
-        /// IOC 容器获取方法
-        /// </summary>
-        /// <typeparam name="T">指定类型</typeparam>
-        public T Get<T>() where T : class
-        {
-            Type key = typeof(T);
-
-            if (mInstances.TryGetValue(key, out object retInstance))
-            {
-                return retInstance as T;
-            }
-
-            return null;
-        }
-    }
-
-    #endregion
-
-    #region BindableProperty
-
-    public interface IReadonlyBindableProperty<T>
-    {
-        T Value { get; }
-
-        IUnRegister Register(Action<T> onValueChanged);
-        void UnRegister(Action<T> onValueChanged);
-        IUnRegister RegisterWithInitValue(Action<T> action);
-    }
-
-    public interface IBindableProperty<T> : IReadonlyBindableProperty<T>
-    {
-        new T Value { get; set; }
-        void SetValueWithoutEvent(T newValue);
-    }
-
-
-    public class BindableProperty<T> : IBindableProperty<T>
-    {
-        private Action<T> mOnValueChanged = (v) => { };
-
-        public BindableProperty(T defaultValue = default)
-        {
-            mValue = defaultValue;
-        }
-
-        protected T mValue;
-
-        public T Value
-        {
-            get => GetValue();
-            set
-            {
-                if (value == null && mValue == null) return;
-                if (value != null && value.Equals(mValue)) return;
-
-                SetValue(value);
-                mOnValueChanged?.Invoke(value);
-            }
-        }
-
-        protected virtual void SetValue(T newValue)
-        {
-            mValue = newValue;
-        }
-
-        protected virtual T GetValue()
-        {
-            return mValue;
-        }
-
-        public void SetValueWithoutEvent(T newValue)
-        {
-            mValue = newValue;
-        }
-
-
-        public IUnRegister Register(Action<T> onValueChanged)
-        {
-            mOnValueChanged += onValueChanged;
-            return new BindablePropertyUnRegister<T>()
-            {
-                BindableProperty = this,
-                OnValueChanged = onValueChanged
-            };
-        }
-
-        public IUnRegister RegisterWithInitValue(Action<T> onValueChanged)
-        {
-            onValueChanged(mValue);
-            return Register(onValueChanged);
-        }
-
-        public static implicit operator T(BindableProperty<T> property)
-        {
-            return property.Value;
-        }
-
-        public override string ToString()
-        {
-            return Value.ToString();
-        }
-
-        public void UnRegister(Action<T> onValueChanged)
-        {
-            mOnValueChanged -= onValueChanged;
-        }
-    }
-
-    public class BindablePropertyUnRegister<T> : IUnRegister
-    {
-        public BindableProperty<T> BindableProperty { get; set; }
-
-        public Action<T> OnValueChanged { get; set; }
-
-        public void UnRegister()
-        {
-            BindableProperty.UnRegister(OnValueChanged);
-
-            BindableProperty = null;
-            OnValueChanged = null;
-        }
-    }
-
-    #endregion
-
-    #region EasyEvent
-
-    public interface IEasyEvent
-    {
-
-    }
-
-    public class EasyEvent : IEasyEvent
-    {
-        private Action mOnEvent = () => { };
-
-        public IUnRegister Register(Action onEvent)
-        {
-            mOnEvent += onEvent;
-
-            return new CustomUnRegister(() =>
-            {
-                UnRegister(onEvent);
-            });
-        }
-
-        public void UnRegister(Action onEvent)
-        {
-            mOnEvent -= onEvent;
-        }
-
-        public void Trigger()
-        {
-            mOnEvent?.Invoke();
-        }
-    }
-
-    public class EasyEvent<T> : IEasyEvent
-    {
-        private Action<T> mOnEvent = e => { };
-
-        public IUnRegister Register(Action<T> onEvent)
-        {
-            mOnEvent += onEvent;
-
-            return new CustomUnRegister(() =>
-            {
-                UnRegister(onEvent);
-            });
-        }
-
-        public void UnRegister(Action<T> onEvent)
-        {
-            mOnEvent -= onEvent;
-        }
-
-        public void Trigger(T t)
-        {
-            mOnEvent?.Invoke(t);
-        }
-    }
-
-    public class EasyEvent<T, K> : IEasyEvent
-    {
-        private Action<T, K> mOnEvent = (t, k) => { };
-
-        public IUnRegister Register(Action<T, K> onEvent)
-        {
-            mOnEvent += onEvent;
-
-            return new CustomUnRegister(() =>
-            {
-                UnRegister(onEvent);
-            });
-        }
-
-        public void UnRegister(Action<T, K> onEvent)
-        {
-            mOnEvent -= onEvent;
-        }
-
-        public void Trigger(T t, K k)
-        {
-            mOnEvent?.Invoke(t, k);
-        }
-    }
-
-    public class EasyEvent<T, K, S> : IEasyEvent
-    {
-        private Action<T, K, S> mOnEvent = (t, k, s) => { };
-
-        public IUnRegister Register(Action<T, K, S> onEvent)
-        {
-            mOnEvent += onEvent;
-
-            return new CustomUnRegister(() =>
-            {
-                UnRegister(onEvent);
-            });
-        }
-
-        public void UnRegister(Action<T, K, S> onEvent)
-        {
-            mOnEvent -= onEvent;
-        }
-
-        public void Trigger(T t, K k, S s)
-        {
-            mOnEvent?.Invoke(t, k, s);
-        }
-    }
-
-    public class EasyEvents
-    {
-        private static EasyEvents mGlobalEvents = new EasyEvents();
-
-        public static T Get<T>() where T : IEasyEvent
-        {
-            return mGlobalEvents.GetEvent<T>();
-        }
-
-        public static void Register<T>() where T : IEasyEvent, new()
-        {
-            mGlobalEvents.AddEvent<T>();
-        }
-
-        private Dictionary<Type, IEasyEvent> mTypeEvents = new Dictionary<Type, IEasyEvent>();
-
-        public void AddEvent<T>() where T : IEasyEvent, new()
-        {
-            mTypeEvents.Add(typeof(T), new T());
-        }
-
-        public T GetEvent<T>() where T : IEasyEvent
-        {
-            if (mTypeEvents.TryGetValue(typeof(T), out IEasyEvent e))
-            {
-                return (T)e;
-            }
-
-            return default;
-        }
-
-        public T GetOrAddEvent<T>() where T : IEasyEvent, new()
-        {
-            var eType = typeof(T);
-            if (mTypeEvents.TryGetValue(eType, out var e))
-            {
-                return (T)e;
-            }
-
-            var t = new T();
-            mTypeEvents.Add(eType, t);
-            return t;
-        }
-    }
-    #endregion
-
-    #region Event
-
-    public interface IEvent
-    {
-
-    }
-    #endregion
+using System.Threading.Tasks;
+using System.Collections.Generic;
+using System;
+using UnityEngine;
+using System.Reflection;
+
+/*
+修改第三版
+将事件从IArchitecture中剥离
+*/
+namespace Blue
+{
+
+    #region  Architecture
+
+    /// <summary>
+    /// 所有功能在 IArchitecture 接口中定义
+    /// 1. 注册/获取Service、Model、Utility;
+    /// 2. 发送命令、事件、查询
+    /// 3. 注册、取消注册事件
+    /// </summary>
+    public interface IArchitecture
+    {
+        void SetArchitecture(IArchitecture instance);
+        void InitArchitecture();
+
+        void RegisterService<T>(T service) where T : IService;
+        void RegisterModel<T>(T Model) where T : IModel;
+        void RegisterUtility<T>(T utility) where T : IUtility;
+
+        T GetService<T>() where T : class, IService;
+        T GetModel<T>() where T : class, IModel;
+        T GetUtility<T>() where T : class, IUtility;
+    }
+
+    public abstract class AbstractArchitecture<T> : IArchitecture where T : AbstractArchitecture<T>, new()
+    {
+        private IOCContainer mContainer = new IOCContainer(); // 将类型、对象存储进IOC容器
+        private ICommandHandler commandHandler = new DefaultCommandHandler();
+        private IQueryHandler queryHandler = new DefaultQueryHandler();
+        private ITypeEventSystem mTypeEventSystem = new TypeEventSystem();
+        private HashSet<IService> mService;
+        private HashSet<IModel> mModels;
+
+        protected abstract void Init();
+
+        private static IArchitecture mArchitectureInstance;
+        void IArchitecture.SetArchitecture(IArchitecture instance)
+        {
+            mArchitectureInstance = instance;
+            CanGetModelExtension.SetArchitecture(mArchitectureInstance);
+            CanGetServiceExtension.SetArchitecture(mArchitectureInstance);
+            CanGetUtilityExtension.SetArchitecture(mArchitectureInstance);
+
+            CanSendCommandExtension.SetCommandHandler(commandHandler);
+            CanSendQueryExtension.SetQueryHandler(queryHandler);
+
+            CanRegisterEventExtension.SetTypeEventSystem(mTypeEventSystem);
+            CanSendEventExtension.SetTypeEventSystem(mTypeEventSystem);
+        }
+        void IArchitecture.InitArchitecture()
+        {
+            StartInit();
+            FinishInit();
+        }
+        private void StartInit()
+        {
+            mService = new HashSet<IService>();
+            mModels = new HashSet<IModel>();
+            Init();
+
+            foreach (var architectureModel in mModels)
+            {
+                architectureModel.OnInit();
+            }
+            foreach (var service in mService)
+            {
+                service.OnInit();
+            }
+        }
+        private void FinishInit()
+        {
+            mService.Clear();
+            mModels.Clear();
+            mService = null;
+            mModels = null;
+        }
+
+        public void RegisterService<TService>(TService service) where TService : IService
+        {
+            mContainer.Register<TService>(service);
+
+            mService.Add(service);
+        }
+        public void RegisterModel<TModel>(TModel model) where TModel : IModel
+        {
+            mContainer.Register<TModel>(model);
+
+            mModels.Add(model);
+        }
+        public void RegisterUtility<TUtility>(TUtility utility) where TUtility : IUtility
+        {
+            mContainer.Register<TUtility>(utility);
+        }
+
+        public TService GetService<TService>() where TService : class, IService
+        {
+            return mContainer.Get<TService>();
+        }
+        public TModel GetModel<TModel>() where TModel : class, IModel
+        {
+            return mContainer.Get<TModel>();
+        }
+        public TUtility GetUtility<TUtility>() where TUtility : class, IUtility
+        {
+            return mContainer.Get<TUtility>();
+        }
+    }
+
+    /// <summary>
+    /// 启动 Architecture
+    /// </summary>
+    internal sealed class ArchitectureInitiator
+    {
+        private ArchitectureInitiator() { }
+        private static ArchitectureInitiator mInstance;
+
+        private IArchitecture architectureInstance = null; // Architecture 实例
+        private Type architectureType = typeof(IArchitecture);
+        private bool architectureInited; // Architecture 是否初始化完成
+
+        [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)]
+        private static void Initiate()
+        {
+            mInstance = new ArchitectureInitiator();
+
+            Type[] typeArr = Assembly.GetExecutingAssembly().GetTypes(); // 获取正在执行的程序集类型数组
+            for (int i = 0; i < typeArr.Length; i++)
+            {
+                Type tmpType = typeArr[i];
+                if (!tmpType.IsInterface)
+                {
+                    if (mInstance.IsArchitecture(tmpType))
+                    {
+                        mInstance.CreateArchitectureInstance(tmpType);
+                    }
+                }
+            }
+            mInstance.RegisterArchitecture();
+            mInstance.InitArchitecture();
+        }
+        private void RegisterArchitecture()
+        {
+            if (architectureInstance != null)
+            {
+                architectureInstance.SetArchitecture(architectureInstance);
+            }
+        }
+
+        private void InitArchitecture()
+        {
+            if (architectureInstance != null)
+            {
+                architectureInstance.InitArchitecture();
+            }
+        }
+
+
+        private bool IsArchitecture(Type tmpType)
+        {
+            if (architectureInited)
+            {
+                return false;
+            }
+            if (tmpType.IsAbstract)
+            {
+                return false;
+            }
+            return architectureType.IsAssignableFrom(tmpType); // 确定指定类型 c 的实例是否能分配给当前类型的变量
+        }
+
+        private void CreateArchitectureInstance(Type archiType)
+        {
+            if (architectureInstance == null)
+            {
+                architectureInstance = (IArchitecture)Activator.CreateInstance(archiType);
+                architectureInited = true;
+            }
+            else
+            {
+                throw new Exception("More than one Architecture sub-class in the application,it should be only one!");
+            }
+        }
+    }
+
+    public interface IOnEvent<T>
+    {
+        void OnEvent(T e);
+    }
+
+    public static class OnGlobalEventExtension
+    {
+        public static IUnRegister RegisterEvent<T>(this IOnEvent<T> self) where T : struct, IEvent
+        {
+            return TypeEventSystem.Global.Register<T>(self.OnEvent);
+        }
+
+        public static void UnRegisterEvent<T>(this IOnEvent<T> self) where T : struct, IEvent
+        {
+            TypeEventSystem.Global.UnRegister<T>(self.OnEvent);
+        }
+    }
+
+    #endregion
+
+    #region Controller
+
+    public interface IController : ICanGetUtility, ICanGetService, ICanGetModel,
+                                   ICanRegisterEvent, ICanSendQuery, ICanSendCommand
+    {
+
+    }
+
+    #endregion
+
+    #region  Service
+
+    public interface IService : ICanGetService, ICanGetModel, ICanGetUtility,
+                                ICanRegisterEvent, ICanSendEvent
+    {
+        void OnInit();
+    }
+
+    #endregion
+
+    #region  Model
+
+    public interface IModel : ICanGetUtility, ICanSendEvent
+    {
+        void OnInit();
+    }
+
+    #endregion
+
+    #region  Utility
+
+    public interface IUtility
+    {
+
+    }
+
+    #endregion
+
+    #region  Command
+
+    public interface ICommand : ICanGetService, ICanGetModel, ICanGetUtility,
+                                ICanSendEvent, ICanSendCommand, ICanSendQuery
+    {
+        void OnExcute();
+    }
+    public interface ICommand<T> : ICanGetService, ICanGetModel, ICanGetUtility,
+                                   ICanSendEvent, ICanSendCommand, ICanSendQuery
+    {
+        T OnExcute();
+    }
+
+    public interface ICommandHandler
+    {
+        void ExcuteCommand(ICommand command);
+        void ExcuteCommand<T>() where T : ICommand, new();
+        T ExcuteCommand<T>(ICommand<T> command);
+    }
+
+    public class DefaultCommandHandler : ICommandHandler
+    {
+        public void ExcuteCommand(ICommand command)
+        {
+            command.OnExcute();
+        }
+
+        public void ExcuteCommand<T>() where T : ICommand, new()
+        {
+            ExcuteCommand(new T());
+        }
+
+        public T ExcuteCommand<T>(ICommand<T> command)
+        {
+            return command.OnExcute();
+        }
+    }
+
+    #endregion
+
+    #region  Query
+
+    public interface IQuery<T> : ICanGetModel, ICanGetService, ICanSendQuery
+    {
+        T DoQuery();
+    }
+    public interface IQueryAsync : ICanGetModel, ICanGetService, ICanSendQuery
+    {
+        void DoQueryAsync<T>(Action<T> onQueryCompleted);
+    }
+    public interface IQueryResult<T>
+    {
+        void OnQuerySucceed(Action<T> onQuerySucceed);
+        void OnQueryFailed(Action onQueryFailed);
+    }
+    public interface IQueryHandler
+    {
+        T DoQuery<T>(IQuery<T> query);
+        K DoQuery<T, K>() where T : IQuery<K>, new();
+
+        IQueryResult<T> DoQueryAsync<T>(IQuery<T> query);
+        IQueryResult<K> DoQueryAsync<T, K>() where T : IQuery<K>, new();
+    }
+
+    public class DefaultQueryHandler : IQueryHandler
+    {
+        public T DoQuery<T>(IQuery<T> query)
+        {
+            return query.DoQuery();
+        }
+
+        public K DoQuery<T, K>() where T : IQuery<K>, new()
+        {
+            return DoQuery(new T());
+        }
+
+        public IQueryResult<T> DoQueryAsync<T>(IQuery<T> query)
+        {
+            DefaultQueryResult<T> queryResult = new DefaultQueryResult<T>();
+            var queryTask = Task.Run(() =>
+            {
+                return query.DoQuery();
+            });
+            var awaiter = queryTask.GetAwaiter();
+            awaiter.OnCompleted(() =>
+            {
+                if (queryTask.IsFaulted | queryTask.IsCanceled)
+                {
+                    queryResult.TriggerFailed();
+                }
+                else
+                {
+                    queryResult.TriggerSuccess(awaiter.GetResult());
+                }
+            });
+            return queryResult;
+        }
+
+        public IQueryResult<K> DoQueryAsync<T, K>() where T : IQuery<K>, new()
+        {
+            return DoQueryAsync(new T());
+        }
+    }
+
+    public class DefaultQueryResult<T> : IQueryResult<T>
+    {
+        private Action<T> mOnQuerySucceed;
+        private Action mOnQueryFailed;
+
+        public void OnQuerySucceed(Action<T> onQuerySucceed)
+        {
+            mOnQuerySucceed += onQuerySucceed;
+        }
+        public void OnQueryFailed(Action onQueryFailed)
+        {
+            mOnQueryFailed += onQueryFailed;
+        }
+        public void TriggerSuccess(T result)
+        {
+            mOnQuerySucceed?.Invoke(result);
+        }
+        public void TriggerFailed()
+        {
+            mOnQueryFailed?.Invoke();
+        }
+    }
+    #endregion
+
+    #region Rule
+
+    /// <summary>
+    /// 能够 GetModel 的接口
+    /// </summary>
+    public interface ICanGetModel
+    {
+    }
+
+    /// <summary>
+    /// ICanGetModel 的静态扩展 GetModel
+    /// </summary>
+    public static class CanGetModelExtension
+    {
+        public static T GetModel<T>(this ICanGetModel self) where T : class, IModel
+        {
+            return _architecture.GetModel<T>();
+        }
+
+        private static IArchitecture _architecture;
+        public static void SetArchitecture(IArchitecture architecture)
+        {
+            _architecture = architecture;
+        }
+    }
+    /// <summary>
+    /// 能够 GetService 的接口
+    /// </summary>
+    public interface ICanGetService
+    {
+    }
+
+    /// <summary>
+    /// ICanGetService 的静态扩展 GetService
+    /// </summary>
+    public static class CanGetServiceExtension
+    {
+        public static T GetService<T>(this ICanGetService self) where T : class, IService
+        {
+            return _architecture.GetService<T>();
+        }
+
+        private static IArchitecture _architecture;
+        public static void SetArchitecture(IArchitecture architecture)
+        {
+            _architecture = architecture;
+        }
+    }
+
+    /// <summary>
+    /// 能够 GetUtility 的接口
+    /// </summary>
+    public interface ICanGetUtility
+    {
+    }
+
+    /// <summary>
+    /// ICanGetUtility 的静态扩展 GetUtility
+    /// </summary>
+    public static class CanGetUtilityExtension
+    {
+        public static T GetUtility<T>(this ICanGetUtility self) where T : class, IUtility
+        {
+            return _architecture.GetUtility<T>();
+        }
+
+        private static IArchitecture _architecture;
+        public static void SetArchitecture(IArchitecture architecture)
+        {
+            _architecture = architecture;
+        }
+    }
+
+    /// <summary>
+    /// 能够 RegisterEvent 的接口
+    /// </summary>
+    public interface ICanRegisterEvent
+    {
+    }
+
+    /// <summary>
+    /// ICanRegisterEvent 的静态扩展 RegisterEvent
+    /// </summary>
+    public static class CanRegisterEventExtension
+    {
+        public static IUnRegister RegisterEvent<T>(this ICanRegisterEvent self, Action<T> onEvent) where T : IEvent
+        {
+            if (typeEventSystem == null) return null;
+            return typeEventSystem.Register<T>(onEvent);
+        }
+
+        public static void UnRegisterEvent<T>(this ICanRegisterEvent self, Action<T> onEvent) where T : IEvent
+        {
+            typeEventSystem.UnRegister<T>(onEvent);
+        }
+
+        private static ITypeEventSystem typeEventSystem;
+        public static void SetTypeEventSystem(ITypeEventSystem mTypeEventSystem)
+        {
+            typeEventSystem = mTypeEventSystem;
+        }
+    }
+
+    /// <summary>
+    /// 能够 SendCommand 的接口
+    /// </summary>
+    public interface ICanSendCommand
+    {
+    }
+
+    /// <summary>
+    /// ICanSendCommand 的静态扩展 SendCommand
+    /// </summary>
+    public static class CanSendCommandExtension
+    {
+        public static void SendCommand<T>(this ICanSendCommand self) where T : ICommand, new()
+        {
+            mCommandHandler.ExcuteCommand<T>();
+        }
+
+        public static void SendCommand<T>(this ICanSendCommand self, T command) where T : ICommand
+        {
+            mCommandHandler.ExcuteCommand(command);
+        }
+
+        public static T SendCommand<T>(this ICanSendCommand self, ICommand<T> command)
+        {
+            return mCommandHandler.ExcuteCommand(command);
+        }
+
+        private static ICommandHandler mCommandHandler;
+        public static void SetCommandHandler(ICommandHandler commandHandler)
+        {
+            mCommandHandler = commandHandler;
+        }
+    }
+
+    /// <summary>
+    /// 能够 SendEvent 的接口
+    /// </summary>
+    public interface ICanSendEvent
+    {
+    }
+
+    /// <summary>
+    /// ICanSendEvent 的静态扩展 SendEvent
+    /// </summary>
+    public static class CanSendEventExtension
+    {
+        public static void SendEvent<T>(this ICanSendEvent self) where T : IEvent, new()
+        {
+            typeEventSystem.Send<T>();
+        }
+
+        public static void SendEvent<T>(this ICanSendEvent self, T e) where T : IEvent
+        {
+            typeEventSystem.Send<T>(e);
+        }
+
+        private static ITypeEventSystem typeEventSystem;
+        public static void SetTypeEventSystem(ITypeEventSystem mTypeEventSystem)
+        {
+            typeEventSystem = mTypeEventSystem;
+        }
+    }
+
+    /// <summary>
+    /// 能够 SendQuery 的接口
+    /// </summary>
+    public interface ICanSendQuery
+    {
+    }
+
+    /// <summary>
+    /// ICanSendQuery 的静态扩展 SendQuery
+    /// </summary>
+    public static class CanSendQueryExtension
+    {
+        public static T SendQuery<T>(this ICanSendQuery self, IQuery<T> queryInstance)
+        {
+            return _queryHandler.DoQuery<T>(queryInstance);
+        }
+        public static K SendQuery<T, K>(this ICanSendQuery self) where T : IQuery<K>, new()
+        {
+            return _queryHandler.DoQuery<T, K>();
+        }
+        public static IQueryResult<T> SendQueryAsync<T>(this ICanSendQuery self, IQuery<T> queryInstance)
+        {
+            return _queryHandler.DoQueryAsync<T>(queryInstance);
+        }
+        public static IQueryResult<K> SendQueryAsync<T, K>(this ICanSendQuery self) where T : IQuery<K>, new()
+        {
+            return _queryHandler.DoQueryAsync<T, K>();
+        }
+        private static IQueryHandler _queryHandler;
+        public static void SetQueryHandler(IQueryHandler queryHandler)
+        {
+            _queryHandler = queryHandler;
+        }
+    }
+
+    #endregion
+
+    #region  TypeEventSystem
+
+    /// <summary>
+    /// 取消监听接口
+    /// </summary>
+    public interface IUnRegister
+    {
+        void UnRegister();
+    }
+
+    /// <summary>
+    /// 取消监听列表接口
+    /// </summary>
+    public interface IUnRegisterList
+    {
+        List<IUnRegister> UnRegistersList { get; }
+    }
+
+    /// <summary>
+    /// 取消监听列表接口的静态扩展
+    /// 【IUnRegister 添加进 IUnRegisterList】
+    /// 【IUnRegisterList全部取消监听】
+    /// </summary>
+    public static class IUnRegisterListExtension
+    {
+        public static void AddToUnRegisterList(this IUnRegister self, IUnRegisterList unRegisterList)
+        {
+            unRegisterList.UnRegistersList.Add(self);
+        }
+
+        public static void UnRegisterAll(this IUnRegisterList self)
+        {
+            foreach (IUnRegister unRegister in self.UnRegistersList)
+            {
+                unRegister.UnRegister();
+            }
+            self.UnRegistersList.Clear();
+        }
+    }
+
+    /// <summary>
+    /// 取消监听的类
+    /// </summary>
+    public struct CustomUnRegister : IUnRegister
+    {
+        private Action mOnUnregister { get; set; }
+
+        public CustomUnRegister(Action onUnRegsiter)
+        {
+            mOnUnregister = onUnRegsiter;
+        }
+
+        public void UnRegister()
+        {
+            mOnUnregister?.Invoke();
+            mOnUnregister = null;
+        }
+    }
+
+    /// <summary>
+    /// 物体销毁时触发取消监听
+    /// </summary>
+    public class UnRegisterOnDestroyTrigger : MonoBehaviour
+    {
+        private readonly HashSet<IUnRegister> mUnRegisters = new HashSet<IUnRegister>();
+
+        public void AddUnRegister(IUnRegister unRegister)
+        {
+            mUnRegisters.Add(unRegister);
+        }
+
+        public void RemoveUnRegister(IUnRegister unRegister)
+        {
+            mUnRegisters.Remove(unRegister);
+        }
+
+        private void OnDestroy()
+        {
+            foreach (IUnRegister unRegister in mUnRegisters)
+            {
+                unRegister.UnRegister();
+            }
+            mUnRegisters.Clear();
+        }
+    }
+
+    /// <summary>
+    /// 取消监听的静态扩展
+    /// 【物体销毁时触发取消监听】
+    /// 【组件所属物体销毁时触发取消监听】
+    /// </summary>
+    public static class UnRegisterExtension
+    {
+        /// <summary>
+        /// 物体:物体销毁时触发取消监听
+        /// </summary>
+        /// <param name="unRegister">取消监听的接口</param>
+        /// <param name="component">物体对象</param>
+        /// <returns>取消监听的接口</returns>
+        public static IUnRegister UnRegisterWhenGameObjectDestroyed(this IUnRegister unRegister, GameObject go)
+        {
+            UnRegisterOnDestroyTrigger trigger = go.GetComponent<UnRegisterOnDestroyTrigger>();
+
+            if (!trigger)
+            {
+                trigger = go.AddComponent<UnRegisterOnDestroyTrigger>();
+            }
+
+            trigger.AddUnRegister(unRegister);
+
+            return unRegister;
+        }
+
+        /// <summary>
+        /// 组件:物体销毁时触发取消监听
+        /// </summary>
+        /// <param name="unRegister">取消监听的接口</param>
+        /// <param name="component">组件对象</param>
+        /// <returns>取消监听的接口</returns>
+        public static IUnRegister UnRegisterWhenGameObjectDestroyed<T>(this IUnRegister unRegister, T component) where T : Component
+        {
+            return unRegister.UnRegisterWhenGameObjectDestroyed(component.gameObject);
+        }
+    }
+
+    public interface ITypeEventSystem
+    {
+        IUnRegister Register<T>(Action<T> onEvent) where T : IEvent;
+        void UnRegister<T>(Action<T> onEvent) where T : IEvent;
+        void Send<T>() where T : IEvent, new();
+        void Send<T>(T e) where T : IEvent;
+    }
+    public class TypeEventSystem : ITypeEventSystem
+    {
+        private readonly EasyEvents mEvents = new EasyEvents();
+        public static readonly TypeEventSystem Global = new TypeEventSystem();
+
+        public void Send<T>() where T : IEvent, new()
+        {
+            mEvents.GetEvent<EasyEvent<T>>()?.Trigger(new T());
+        }
+
+        public void Send<T>(T e) where T : IEvent
+        {
+            mEvents.GetEvent<EasyEvent<T>>()?.Trigger(e);
+        }
+
+        public IUnRegister Register<T>(Action<T> onEvent) where T : IEvent
+        {
+            var e = mEvents.GetOrAddEvent<EasyEvent<T>>();
+            return e.Register(onEvent);
+        }
+
+        public void UnRegister<T>(Action<T> onEvent) where T : IEvent
+        {
+            var e = mEvents.GetEvent<EasyEvent<T>>();
+            if (e != null)
+            {
+                e.UnRegister(onEvent);
+            }
+        }
+    }
+
+    #endregion
+
+    #region  IOC
+
+    /// <summary>
+    /// IOC 容器 ,将类型对应的对象存储进字典
+    /// 【注册 + 获取】
+    /// </summary>
+    public class IOCContainer
+    {
+        private Dictionary<Type, object> mInstances = new Dictionary<Type, object>();
+
+        /// <summary>
+        /// IOC 容器注册方法
+        /// </summary>
+        /// <param name="instance">实例</param>
+        /// <typeparam name="T">指定类型</typeparam>
+        public void Register<T>(T instance)
+        {
+            Type key = typeof(T);
+
+            if (mInstances.ContainsKey(key))
+            {
+                mInstances[key] = instance;
+            }
+            else
+            {
+                mInstances.Add(key, instance);
+            }
+        }
+
+        /// <summary>
+        /// IOC 容器获取方法
+        /// </summary>
+        /// <typeparam name="T">指定类型</typeparam>
+        public T Get<T>() where T : class
+        {
+            Type key = typeof(T);
+
+            if (mInstances.TryGetValue(key, out object retInstance))
+            {
+                return retInstance as T;
+            }
+
+            return null;
+        }
+    }
+
+    #endregion
+
+    #region BindableProperty
+
+    public interface IReadonlyBindableProperty<T>
+    {
+        T Value { get; }
+
+        IUnRegister Register(Action<T> onValueChanged);
+        void UnRegister(Action<T> onValueChanged);
+        IUnRegister RegisterWithInitValue(Action<T> action);
+    }
+
+    public interface IBindableProperty<T> : IReadonlyBindableProperty<T>
+    {
+        new T Value { get; set; }
+        void SetValueWithoutEvent(T newValue);
+    }
+
+
+    public class BindableProperty<T> : IBindableProperty<T>
+    {
+        private Action<T> mOnValueChanged = (v) => { };
+
+        public BindableProperty(T defaultValue = default)
+        {
+            mValue = defaultValue;
+        }
+
+        protected T mValue;
+
+        public T Value
+        {
+            get => GetValue();
+            set
+            {
+                if (value == null && mValue == null) return;
+                if (value != null && value.Equals(mValue)) return;
+
+                SetValue(value);
+                mOnValueChanged?.Invoke(value);
+            }
+        }
+
+        protected virtual void SetValue(T newValue)
+        {
+            mValue = newValue;
+        }
+
+        protected virtual T GetValue()
+        {
+            return mValue;
+        }
+
+        public void SetValueWithoutEvent(T newValue)
+        {
+            mValue = newValue;
+        }
+
+
+        public IUnRegister Register(Action<T> onValueChanged)
+        {
+            mOnValueChanged += onValueChanged;
+            return new BindablePropertyUnRegister<T>()
+            {
+                BindableProperty = this,
+                OnValueChanged = onValueChanged
+            };
+        }
+
+        public IUnRegister RegisterWithInitValue(Action<T> onValueChanged)
+        {
+            onValueChanged(mValue);
+            return Register(onValueChanged);
+        }
+
+        public static implicit operator T(BindableProperty<T> property)
+        {
+            return property.Value;
+        }
+
+        public override string ToString()
+        {
+            return Value.ToString();
+        }
+
+        public void UnRegister(Action<T> onValueChanged)
+        {
+            mOnValueChanged -= onValueChanged;
+        }
+    }
+
+    public class BindablePropertyUnRegister<T> : IUnRegister
+    {
+        public BindableProperty<T> BindableProperty { get; set; }
+
+        public Action<T> OnValueChanged { get; set; }
+
+        public void UnRegister()
+        {
+            BindableProperty.UnRegister(OnValueChanged);
+
+            BindableProperty = null;
+            OnValueChanged = null;
+        }
+    }
+
+    #endregion
+
+    #region EasyEvent
+
+    public interface IEasyEvent
+    {
+
+    }
+
+    public class EasyEvent : IEasyEvent
+    {
+        private Action mOnEvent = () => { };
+
+        public IUnRegister Register(Action onEvent)
+        {
+            mOnEvent += onEvent;
+
+            return new CustomUnRegister(() =>
+            {
+                UnRegister(onEvent);
+            });
+        }
+
+        public void UnRegister(Action onEvent)
+        {
+            mOnEvent -= onEvent;
+        }
+
+        public void Trigger()
+        {
+            mOnEvent?.Invoke();
+        }
+    }
+
+    public class EasyEvent<T> : IEasyEvent
+    {
+        private Action<T> mOnEvent = e => { };
+
+        public IUnRegister Register(Action<T> onEvent)
+        {
+            mOnEvent += onEvent;
+
+            return new CustomUnRegister(() =>
+            {
+                UnRegister(onEvent);
+            });
+        }
+
+        public void UnRegister(Action<T> onEvent)
+        {
+            mOnEvent -= onEvent;
+        }
+
+        public void Trigger(T t)
+        {
+            mOnEvent?.Invoke(t);
+        }
+    }
+
+    public class EasyEvent<T, K> : IEasyEvent
+    {
+        private Action<T, K> mOnEvent = (t, k) => { };
+
+        public IUnRegister Register(Action<T, K> onEvent)
+        {
+            mOnEvent += onEvent;
+
+            return new CustomUnRegister(() =>
+            {
+                UnRegister(onEvent);
+            });
+        }
+
+        public void UnRegister(Action<T, K> onEvent)
+        {
+            mOnEvent -= onEvent;
+        }
+
+        public void Trigger(T t, K k)
+        {
+            mOnEvent?.Invoke(t, k);
+        }
+    }
+
+    public class EasyEvent<T, K, S> : IEasyEvent
+    {
+        private Action<T, K, S> mOnEvent = (t, k, s) => { };
+
+        public IUnRegister Register(Action<T, K, S> onEvent)
+        {
+            mOnEvent += onEvent;
+
+            return new CustomUnRegister(() =>
+            {
+                UnRegister(onEvent);
+            });
+        }
+
+        public void UnRegister(Action<T, K, S> onEvent)
+        {
+            mOnEvent -= onEvent;
+        }
+
+        public void Trigger(T t, K k, S s)
+        {
+            mOnEvent?.Invoke(t, k, s);
+        }
+    }
+
+    public class EasyEvents
+    {
+        private static EasyEvents mGlobalEvents = new EasyEvents();
+
+        public static T Get<T>() where T : IEasyEvent
+        {
+            return mGlobalEvents.GetEvent<T>();
+        }
+
+        public static void Register<T>() where T : IEasyEvent, new()
+        {
+            mGlobalEvents.AddEvent<T>();
+        }
+
+        private Dictionary<Type, IEasyEvent> mTypeEvents = new Dictionary<Type, IEasyEvent>();
+
+        public void AddEvent<T>() where T : IEasyEvent, new()
+        {
+            mTypeEvents.Add(typeof(T), new T());
+        }
+
+        public T GetEvent<T>() where T : IEasyEvent
+        {
+            if (mTypeEvents.TryGetValue(typeof(T), out IEasyEvent e))
+            {
+                return (T)e;
+            }
+
+            return default;
+        }
+
+        public T GetOrAddEvent<T>() where T : IEasyEvent, new()
+        {
+            var eType = typeof(T);
+            if (mTypeEvents.TryGetValue(eType, out var e))
+            {
+                return (T)e;
+            }
+
+            var t = new T();
+            mTypeEvents.Add(eType, t);
+            return t;
+        }
+    }
+    #endregion
+
+    #region Event
+
+    public interface IEvent
+    {
+
+    }
+    #endregion
 }

+ 0 - 0
Assets/Game/Blue/0.F/BlueVersion.cs.meta → Assets/HotUpdate/Blue/BlueVersion.cs.meta


+ 0 - 0
Assets/Game/Blue/Command.meta → Assets/HotUpdate/Blue/Command.meta


+ 27 - 27
Assets/Game/Blue/Command/DeviceDetailsUpdataDataCommand.cs → Assets/HotUpdate/Blue/Command/DeviceDetailsUpdataDataCommand.cs

@@ -1,28 +1,28 @@
-using Blue;
-using UnityEngine;
-
-namespace GHZLangChao
-{
-    public class DeviceDetailsUpdataDataCommand : ICommand
-    {
-        private DeviceParameters DeviceParameter;
-        private Transform currentPos;
-        private DataItem item;
-        public DeviceDetailsUpdataDataCommand(DeviceParameters DeviceParameter,Transform currentPos,DataItem item)
-        {
-            this.DeviceParameter = DeviceParameter;
-            this.currentPos = currentPos;
-            this.item = item;
-        }
-
-        public void OnExcute()
-        {
-            this.SendEvent(new DeviceDetailsUpdataDataEvent()
-            {
-                DeviceParameter = this.DeviceParameter,
-                currentPos = this.currentPos,
-                item = this.item
-            });
-        }
-    }
+using Blue;
+using UnityEngine;
+
+namespace GHZLangChao
+{
+    public class DeviceDetailsUpdataDataCommand : ICommand
+    {
+        private DeviceParameters DeviceParameter;
+        private Transform currentPos;
+        private DataItem item;
+        public DeviceDetailsUpdataDataCommand(DeviceParameters DeviceParameter,Transform currentPos,DataItem item)
+        {
+            this.DeviceParameter = DeviceParameter;
+            this.currentPos = currentPos;
+            this.item = item;
+        }
+
+        public void OnExcute()
+        {
+            this.SendEvent(new DeviceDetailsUpdataDataEvent()
+            {
+                DeviceParameter = this.DeviceParameter,
+                currentPos = this.currentPos,
+                item = this.item
+            });
+        }
+    }
 }

+ 0 - 0
Assets/Game/Blue/Command/DeviceDetailsUpdataDataCommand.cs.meta → Assets/HotUpdate/Blue/Command/DeviceDetailsUpdataDataCommand.cs.meta


+ 0 - 0
Assets/Game/Blue/RTC/Command/NoEnterRoomCommand.cs → Assets/HotUpdate/Blue/Command/NoEnterRoomCommand.cs


+ 0 - 0
Assets/Game/Blue/RTC/Command/NoEnterRoomCommand.cs.meta → Assets/HotUpdate/Blue/Command/NoEnterRoomCommand.cs.meta


+ 0 - 0
Assets/Game/Blue/Controller.meta → Assets/HotUpdate/Blue/Controller.meta


+ 0 - 0
Assets/Game/Blue/Controller/Item.meta → Assets/HotUpdate/Blue/Controller/Item.meta


+ 116 - 116
Assets/Game/Blue/Controller/Item/DeviceInfo_Item.cs → Assets/HotUpdate/Blue/Controller/Item/DeviceInfo_Item.cs

@@ -1,116 +1,116 @@
-using Blue;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using UnityEngine;
-using UnityEngine.UI;
-using TMPro;
-using Agora.Rtc.LitJson;
-
-namespace GHZLangChao
-{
-    public class DeviceInfo_Item : AbstractController
-    {
-        private DeviceParameters DeviceParameter;
-        public Transform currentPos;
-        public DataItem item;
-        public TMP_Text deviceName;
-        public TMP_Text type;
-        public TMP_Text model;
-        public TMP_Text ip;
-
-        [SerializeField] private Button DetailsBtn;
-
-        private IQueueSystem mQueueSystem;
-        private void Start()
-        {
-            DetailsBtn.onClick.AddListener(ClickDetails);
-        }
-
-        int i;
-        public void Init(DeviceParameters DeviceParameter, int i, DataItem item)
-        {
-            this.DeviceParameter = DeviceParameter;
-            this.i = i;
-            this.item = item;
-
-            deviceName.text = DeviceParameter.cabinetNumber;
-            type.text = DeviceParameter.deviceType;
-            model.text = DeviceParameter.deviceBrand;
-            ip.text = DeviceParameter.managementIP;
-
-        }
-
-        public void InitNull()
-        {
-            SettingNull();
-        }
-
-        private void ClickDetails()
-        {
-          //  DeviceParameter.deviceModel = "NetView400" + i;
-
-            //  Vector3 currentPos = transform.position; // 为了将详情面板移动到面前
-
-            // 从后台获取UI详情
-
-            JsonData data = new JsonData();
-            data["cabinetNumber"] = DeviceParameter.cabinetNumber;
-            data["u"] = DeviceParameter.u;
-
-            // string jsondata = JsonConvert.SerializeObject(data);
-
-            Debug.Log(data.ToJson());
-
-            StartCoroutine(HttpTool.Instance.SendHttp(HttpActionLang.bladeServer, data.ToJson(), BladeServerCallBack));
-           // HttpLangChaoTool.Instance.Post(HttpLangChaoAction.bladeServer, jsondata, BladeServerCallBack);
-
-           
-           // item.gameObject.SetActive(false);
-        }
-
-        private void SettingNull()
-        {
-            DetailsBtn.interactable = false;
-            transform.GetComponent<Image>().enabled = false;
-
-            for (int i = 0; i < transform.childCount; i++)
-            {
-                transform.GetChild(i).gameObject.SetActive(false);
-            }
-
-        }
-
-        private void BladeServerCallBack(string msg)
-        {
-            Debug.Log(msg);
-            JObject json = JObject.Parse(msg);
-
-            if (json["code"].ToString() == "200")
-            {
-                string data = json["data"]["list"][0].ToString();
-                Debug.Log(data);
-               this.DeviceParameter = JsonConvert.DeserializeObject<DeviceParameters>(data);
-
-                Debug.Log(JsonConvert.SerializeObject(this.DeviceParameter));
-                this.SendCommand(new DeviceDetailsUpdataDataCommand(DeviceParameter, currentPos, item)); // 触发事件,打开面板,更新数据
-            }
-            else
-            {
-                Debug.LogError(" 请求刀片机详情参数出错 !!! " + HttpActionLang.bladeServer);
-            }
-
-        }
-
-        private void OnEnable()
-        {
-            if (mQueueSystem == null)
-                mQueueSystem = this.GetService<IQueueSystem>();
-            mQueueSystem.Add(gameObject);
-        }
-
-        private void OnDestroy()
-        {
-            mQueueSystem.Remove(gameObject);
-        }
-    }
-}
+using Blue;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+using TMPro;
+using LitJson;
+
+namespace GHZLangChao
+{
+    public class DeviceInfo_Item : AbstractController
+    {
+        private DeviceParameters DeviceParameter;
+        public Transform currentPos;
+        public DataItem item;
+        public TMP_Text deviceName;
+        public TMP_Text type;
+        public TMP_Text model;
+        public TMP_Text ip;
+
+        [SerializeField] private Button DetailsBtn;
+
+        private IQueueSystem mQueueSystem;
+        private void Start()
+        {
+            DetailsBtn.onClick.AddListener(ClickDetails);
+        }
+
+        int i;
+        public void Init(DeviceParameters DeviceParameter, int i, DataItem item)
+        {
+            this.DeviceParameter = DeviceParameter;
+            this.i = i;
+            this.item = item;
+
+            deviceName.text = DeviceParameter.cabinetNumber;
+            type.text = DeviceParameter.deviceType;
+            model.text = DeviceParameter.deviceBrand;
+            ip.text = DeviceParameter.managementIP;
+
+        }
+
+        public void InitNull()
+        {
+            SettingNull();
+        }
+
+        private void ClickDetails()
+        {
+          //  DeviceParameter.deviceModel = "NetView400" + i;
+
+            //  Vector3 currentPos = transform.position; // 为了将详情面板移动到面前
+
+            // 从后台获取UI详情
+
+            JsonData data = new JsonData();
+            data["cabinetNumber"] = DeviceParameter.cabinetNumber;
+            data["u"] = DeviceParameter.u;
+
+            // string jsondata = JsonConvert.SerializeObject(data);
+
+            Debug.Log(data.ToJson());
+
+            StartCoroutine(HttpTool.Instance.SendHttp(HttpActionLang.bladeServer, data.ToJson(), BladeServerCallBack));
+           // HttpLangChaoTool.Instance.Post(HttpLangChaoAction.bladeServer, jsondata, BladeServerCallBack);
+
+           
+           // item.gameObject.SetActive(false);
+        }
+
+        private void SettingNull()
+        {
+            DetailsBtn.interactable = false;
+            transform.GetComponent<Image>().enabled = false;
+
+            for (int i = 0; i < transform.childCount; i++)
+            {
+                transform.GetChild(i).gameObject.SetActive(false);
+            }
+
+        }
+
+        private void BladeServerCallBack(string msg)
+        {
+            Debug.Log(msg);
+            JObject json = JObject.Parse(msg);
+
+            if (json["code"].ToString() == "200")
+            {
+                string data = json["data"]["list"][0].ToString();
+                Debug.Log(data);
+               this.DeviceParameter = JsonConvert.DeserializeObject<DeviceParameters>(data);
+
+                Debug.Log(JsonConvert.SerializeObject(this.DeviceParameter));
+                this.SendCommand(new DeviceDetailsUpdataDataCommand(DeviceParameter, currentPos, item)); // 触发事件,打开面板,更新数据
+            }
+            else
+            {
+                Debug.LogError(" 请求刀片机详情参数出错 !!! " + HttpActionLang.bladeServer);
+            }
+
+        }
+
+        private void OnEnable()
+        {
+            if (mQueueSystem == null)
+                mQueueSystem = this.GetService<IQueueSystem>();
+            mQueueSystem.Add(gameObject);
+        }
+
+        private void OnDestroy()
+        {
+            mQueueSystem.Remove(gameObject);
+        }
+    }
+}

+ 0 - 0
Assets/Game/Blue/Controller/Item/DeviceInfo_Item.cs.meta → Assets/HotUpdate/Blue/Controller/Item/DeviceInfo_Item.cs.meta


+ 36 - 36
Assets/Game/Blue/Controller/Item/FaultPanel_Item.cs → Assets/HotUpdate/Blue/Controller/Item/FaultPanel_Item.cs

@@ -1,37 +1,37 @@
-using UnityEngine;
-using UnityEngine.UI;
-using TMPro;
-
-namespace GHZLangChao
-{
-    /// <summary>
-    /// ShowDaoHang 面板 -- 故障面板 ---子物体
-    /// </summary>
-    public class FaultPanel_Item : AbstractController
-    {
-        public TextMeshProUGUI Name; // 设备名称
-        public TextMeshProUGUI System; // 承载系统
-        public TextMeshProUGUI Level; // 告警级别
-        public TextMeshProUGUI Time;// 告警时间
-
-        private AlarmData AlarmData;
-        public void Init(AlarmData AlarmData)
-        {
-            this.AlarmData = AlarmData;
-
-            Name.text = AlarmData.title;
-            System.text = AlarmData.carryingSystem;
-            Level.text = AlarmData.level;
-            Time.text = AlarmData.equipmentAlarmTime;
-        }
-
-        private Color mButtonColor = new Color(102,178,255,128);
-        public void ClickButton()
-        {
-            Debug.Log($"选择了{name}");
-            GetComponent<RawImage>().color = mButtonColor;
-            XunJianManager.AlarmData = AlarmData;
-            BasicDeviceControl.AlarmData = AlarmData;
-        }
-    }
+using UnityEngine;
+using UnityEngine.UI;
+using TMPro;
+
+namespace GHZLangChao
+{
+    /// <summary>
+    /// ShowDaoHang 面板 -- 故障面板 ---子物体
+    /// </summary>
+    public class FaultPanel_Item : AbstractController
+    {
+        public TextMeshProUGUI Name; // 设备名称
+        public TextMeshProUGUI System; // 承载系统
+        public TextMeshProUGUI Level; // 告警级别
+        public TextMeshProUGUI Time;// 告警时间
+
+        private AlarmData AlarmData;
+        public void Init(AlarmData AlarmData)
+        {
+            this.AlarmData = AlarmData;
+
+            Name.text = AlarmData.title;
+            System.text = AlarmData.carryingSystem;
+            Level.text = AlarmData.level;
+            Time.text = AlarmData.equipmentAlarmTime;
+        }
+
+        private Color mButtonColor = new Color(102,178,255,128);
+        public void ClickButton()
+        {
+            Debug.Log($"选择了{name}");
+            GetComponent<RawImage>().color = mButtonColor;
+            XunJianManager.AlarmData = AlarmData;
+            BasicDeviceControl.AlarmData = AlarmData;
+        }
+    }
 }

+ 0 - 0
Assets/Game/Blue/Controller/Item/FaultPanel_Item.cs.meta → Assets/HotUpdate/Blue/Controller/Item/FaultPanel_Item.cs.meta


+ 24 - 24
Assets/Game/Blue/Controller/Item/RoomName_Item.cs → Assets/HotUpdate/Blue/Controller/Item/RoomName_Item.cs

@@ -1,25 +1,25 @@
-using System.Collections;
-using UnityEngine;
-using UnityEngine.UI;
-using TMPro;
-
-namespace GHZLangChao
-{
-    public class RoomName_Item : AbstractController
-    {
-        public TextMeshProUGUI RoomName_Text; // 显示机房名称
-        public TextMeshProUGUI XunJian_Text; // 显示巡检
-
-        private void Start()
-        {
-            XunJian_Text.text = "未巡检";
-
-            StartCoroutine(UpdateText());
-        }
-        private IEnumerator UpdateText()
-        {
-            yield return new WaitForSeconds(3);
-            XunJian_Text.text = "已巡检";
-        }
-    }
+using System.Collections;
+using UnityEngine;
+using UnityEngine.UI;
+using TMPro;
+
+namespace GHZLangChao
+{
+    public class RoomName_Item : AbstractController
+    {
+        public TextMeshProUGUI RoomName_Text; // 显示机房名称
+        public TextMeshProUGUI XunJian_Text; // 显示巡检
+
+        private void Start()
+        {
+            XunJian_Text.text = "未巡检";
+
+            StartCoroutine(UpdateText());
+        }
+        private IEnumerator UpdateText()
+        {
+            yield return new WaitForSeconds(3);
+            XunJian_Text.text = "已巡检";
+        }
+    }
 }

+ 0 - 0
Assets/Game/Blue/Controller/Item/RoomName_Item.cs.meta → Assets/HotUpdate/Blue/Controller/Item/RoomName_Item.cs.meta


+ 54 - 54
Assets/Game/Blue/Controller/Item/SearchPanel_Item.cs → Assets/HotUpdate/Blue/Controller/Item/SearchPanel_Item.cs

@@ -1,55 +1,55 @@
-using UnityEngine;
-using UnityEngine.UI;
-using TMPro;
-
-namespace GHZLangChao
-{
-    /// <summary>
-    /// ShowDaoHang 面板 -- 搜索面板 ---子物体
-    /// </summary>
-    public class SearchPanel_Item : MonoBehaviour
-    {
-        public TextMeshProUGUI Name; // 设备名称
-        public TextMeshProUGUI System; // 承载系统
-        public TextMeshProUGUI Pos; // 设备位置
-        public TextMeshProUGUI Type;// 设备类别
-        public TextMeshProUGUI Model;// 设备型号
-        public TextMeshProUGUI Factory;// 厂家
-        public TextMeshProUGUI Standards;// 规格
-
-        private MachineParameters MachineParameter;
-
-        public void Init(MachineParameters MachineParameter)
-        {
-            this.MachineParameter = MachineParameter;
-
-            Name.text = MachineParameter.deviceName;
-            System.text = MachineParameter.carryingSystem;
-            Pos.text = MachineParameter.deviceLocation;
-            Type.text = MachineParameter.equipmentType;
-
-            if(MachineParameter.equipmentModel!=null)
-                Model.text = MachineParameter.equipmentModel;
-            else
-                Model.text = "--";
-
-            if(MachineParameter.factory!=null)
-                Factory.text = MachineParameter.factory;
-            else
-                Factory.text = "--";
-
-            if(MachineParameter.specification!=null)
-                Standards.text = MachineParameter.specification;
-            else
-                Standards.text = "--";
-        }
-
-        private Color mButtonColor = new Color(102,178,255,128);
-        public void ClickButton()
-        {
-            Debug.Log($"选择了{name}");
-            GetComponent<RawImage>().color = mButtonColor;
-            XunJianManager.MachineParameters = MachineParameter;
-        }
-    }
+using UnityEngine;
+using UnityEngine.UI;
+using TMPro;
+
+namespace GHZLangChao
+{
+    /// <summary>
+    /// ShowDaoHang 面板 -- 搜索面板 ---子物体
+    /// </summary>
+    public class SearchPanel_Item : MonoBehaviour
+    {
+        public TextMeshProUGUI Name; // 设备名称
+        public TextMeshProUGUI System; // 承载系统
+        public TextMeshProUGUI Pos; // 设备位置
+        public TextMeshProUGUI Type;// 设备类别
+        public TextMeshProUGUI Model;// 设备型号
+        public TextMeshProUGUI Factory;// 厂家
+        public TextMeshProUGUI Standards;// 规格
+
+        private MachineParameters MachineParameter;
+
+        public void Init(MachineParameters MachineParameter)
+        {
+            this.MachineParameter = MachineParameter;
+
+            Name.text = MachineParameter.deviceName;
+            System.text = MachineParameter.carryingSystem;
+            Pos.text = MachineParameter.deviceLocation;
+            Type.text = MachineParameter.equipmentType;
+
+            if(MachineParameter.equipmentModel!=null)
+                Model.text = MachineParameter.equipmentModel;
+            else
+                Model.text = "--";
+
+            if(MachineParameter.factory!=null)
+                Factory.text = MachineParameter.factory;
+            else
+                Factory.text = "--";
+
+            if(MachineParameter.specification!=null)
+                Standards.text = MachineParameter.specification;
+            else
+                Standards.text = "--";
+        }
+
+        private Color mButtonColor = new Color(102,178,255,128);
+        public void ClickButton()
+        {
+            Debug.Log($"选择了{name}");
+            GetComponent<RawImage>().color = mButtonColor;
+            XunJianManager.MachineParameters = MachineParameter;
+        }
+    }
 }

+ 0 - 0
Assets/Game/Blue/Controller/Item/SearchPanel_Item.cs.meta → Assets/HotUpdate/Blue/Controller/Item/SearchPanel_Item.cs.meta


+ 0 - 0
Assets/Game/Blue/Controller/Item/ShowXunJian_UIItem.cs → Assets/HotUpdate/Blue/Controller/Item/ShowXunJian_UIItem.cs


+ 0 - 0
Assets/Game/Blue/Controller/Item/ShowXunJian_UIItem.cs.meta → Assets/HotUpdate/Blue/Controller/Item/ShowXunJian_UIItem.cs.meta


+ 0 - 0
Assets/Game/Blue/Controller/Item/WarningInfoItem.cs → Assets/HotUpdate/Blue/Controller/Item/WarningInfoItem.cs


+ 0 - 0
Assets/Game/Blue/Controller/Item/WarningInfoItem.cs.meta → Assets/HotUpdate/Blue/Controller/Item/WarningInfoItem.cs.meta


+ 0 - 0
Assets/Game/Blue/Controller/Item/XunJianUIItem_Texture.cs → Assets/HotUpdate/Blue/Controller/Item/XunJianUIItem_Texture.cs


+ 0 - 0
Assets/Game/Blue/Controller/Item/XunJianUIItem_Texture.cs.meta → Assets/HotUpdate/Blue/Controller/Item/XunJianUIItem_Texture.cs.meta


+ 1 - 4
Assets/Game/Blue/Controller/LangChaoMinIo.cs → Assets/HotUpdate/Blue/Controller/LangChaoMinIo.cs

@@ -160,10 +160,7 @@ public class LangChaoMinIo : MonoSingleton<LangChaoMinIo>
     public void getFile(int projectId, string Index, int imgIndex, Action<Texture2D> callBack)//, string path
     {
         this.projectId = projectId;
-
-
-
-       
+   
         string fileName = DicName + "_" + projectId + "_" + Index + "_" + imgIndex + ".png";
         string filePathname = PlayerPrefs.GetString(fileName);
         if (filePathname != "")

+ 0 - 0
Assets/Game/Blue/Controller/LangChaoMinIo.cs.meta → Assets/HotUpdate/Blue/Controller/LangChaoMinIo.cs.meta


+ 0 - 0
Assets/Game/Blue/Controller/LangChaoRommMinIo.cs → Assets/HotUpdate/Blue/Controller/LangChaoRommMinIo.cs


+ 0 - 0
Assets/Game/Blue/Controller/LangChaoRommMinIo.cs.meta → Assets/HotUpdate/Blue/Controller/LangChaoRommMinIo.cs.meta


+ 0 - 0
Assets/Game/Blue/Controller/ShowDeviceControle.cs → Assets/HotUpdate/Blue/Controller/ShowDeviceControle.cs


+ 0 - 0
Assets/Game/Blue/Controller/ShowDeviceControle.cs.meta → Assets/HotUpdate/Blue/Controller/ShowDeviceControle.cs.meta


+ 0 - 0
Assets/Game/Blue/Controller/ShowHide_Toggle.cs → Assets/HotUpdate/Blue/Controller/ShowHide_Toggle.cs


+ 0 - 0
Assets/Game/Blue/Controller/ShowHide_Toggle.cs.meta → Assets/HotUpdate/Blue/Controller/ShowHide_Toggle.cs.meta


+ 0 - 0
Assets/Game/Blue/Event.meta → Assets/HotUpdate/Blue/Event.meta


+ 11 - 11
Assets/Game/Blue/Event/DeviceDetailsUpdataDataEvent.cs → Assets/HotUpdate/Blue/Event/DeviceDetailsUpdataDataEvent.cs

@@ -1,12 +1,12 @@
-using Blue;
-using UnityEngine;
-
-namespace GHZLangChao
-{
-    public struct DeviceDetailsUpdataDataEvent : IEvent
-    {
-        public DeviceParameters DeviceParameter;
-        public Transform currentPos;
-        public DataItem item;
-    }
+using Blue;
+using UnityEngine;
+
+namespace GHZLangChao
+{
+    public struct DeviceDetailsUpdataDataEvent : IEvent
+    {
+        public DeviceParameters DeviceParameter;
+        public Transform currentPos;
+        public DataItem item;
+    }
 }

+ 0 - 0
Assets/Game/Blue/Event/DeviceDetailsUpdataDataEvent.cs.meta → Assets/HotUpdate/Blue/Event/DeviceDetailsUpdataDataEvent.cs.meta


+ 0 - 0
Assets/Game/Blue/RTC/Event/RTCEvent.cs → Assets/HotUpdate/Blue/Event/RTCEvent.cs


+ 0 - 0
Assets/Game/Blue/RTC/Event/RTCEvent.cs.meta → Assets/HotUpdate/Blue/Event/RTCEvent.cs.meta


+ 0 - 0
Assets/Game/Blue/Event/ShowDeviceEvent.cs → Assets/HotUpdate/Blue/Event/ShowDeviceEvent.cs


+ 0 - 0
Assets/Game/Blue/Event/ShowDeviceEvent.cs.meta → Assets/HotUpdate/Blue/Event/ShowDeviceEvent.cs.meta


+ 0 - 0
Assets/Game/Blue/RTC/Event/SignallingEvent.cs → Assets/HotUpdate/Blue/Event/SignallingEvent.cs


+ 0 - 0
Assets/Game/Blue/RTC/Event/SignallingEvent.cs.meta → Assets/HotUpdate/Blue/Event/SignallingEvent.cs.meta


+ 31 - 31
Assets/Game/Blue/GHZLangChao.cs → Assets/HotUpdate/Blue/GHZLangChao.cs

@@ -1,32 +1,32 @@
-using Blue;
-
-namespace GHZLangChao
-{
-    public class GHZLangChao : AbstractArchitecture<GHZLangChao>
-    {
-        protected override void Init()
-        {
-            RegisterModel();
-            RegisterService();
-            RegisterUtility();
-        }
-
-        private void RegisterModel()
-        {
-        }
-
-        private void RegisterService()
-        {
-            this.RegisterService<IQueueSystem>(new QueueSystem());
-            this.RegisterService<IRTCService>(new RTCService());
-            this.RegisterService<ISignallingService>(new SignallingService());
-            this.RegisterService<ISendLogService>(new SendLogService());
-            this.RegisterService<IInspectionService>(new InspectionService());
-        }
-
-        private void RegisterUtility()
-        {
-            this.RegisterUtility<IRawImageForSpriteUtility>(new RawImageForSpriteUtility());
-        }
-    }
+using Blue;
+
+namespace GHZLangChao
+{
+    public class GHZLangChao : AbstractArchitecture<GHZLangChao>
+    {
+        protected override void Init()
+        {
+            RegisterModel();
+            RegisterService();
+            RegisterUtility();
+        }
+
+        private void RegisterModel()
+        {
+        }
+
+        private void RegisterService()
+        {
+            this.RegisterService<IQueueSystem>(new QueueSystem());
+            this.RegisterService<IRTCService>(new RTCService());
+            this.RegisterService<ISignallingService>(new SignallingService());
+            this.RegisterService<ISendLogService>(new SendLogService());
+            this.RegisterService<IInspectionService>(new InspectionService());
+        }
+
+        private void RegisterUtility()
+        {
+            this.RegisterUtility<IRawImageForSpriteUtility>(new RawImageForSpriteUtility());
+        }
+    }
 }

+ 0 - 0
Assets/Game/Blue/GHZLangChao.cs.meta → Assets/HotUpdate/Blue/GHZLangChao.cs.meta


+ 0 - 0
Assets/Game/Blue/RTC/Info.meta → Assets/HotUpdate/Blue/Info.meta


+ 0 - 0
Assets/Game/Blue/RTC/Info/ContactsInfo.cs → Assets/HotUpdate/Blue/Info/ContactsInfo.cs


+ 0 - 0
Assets/Game/Blue/RTC/Info/ContactsInfo.cs.meta → Assets/HotUpdate/Blue/Info/ContactsInfo.cs.meta


+ 0 - 0
Assets/Game/Blue/RTC/Info/InspectionInfo.cs → Assets/HotUpdate/Blue/Info/InspectionInfo.cs


+ 0 - 0
Assets/Game/Blue/RTC/Info/InspectionInfo.cs.meta → Assets/HotUpdate/Blue/Info/InspectionInfo.cs.meta


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно