static int Subscribe(IntPtr L) { try { ToLua.CheckArgsCount(L, 3); UnityGameFramework.Runtime.EventComponent obj = (UnityGameFramework.Runtime.EventComponent)ToLua.CheckObject(L, 1, typeof(UnityGameFramework.Runtime.EventComponent)); int arg0 = (int)LuaDLL.luaL_checknumber(L, 2); System.EventHandler <GameFramework.Event.GameEventArgs> arg1 = null; LuaTypes funcType3 = LuaDLL.lua_type(L, 3); if (funcType3 != LuaTypes.LUA_TFUNCTION) { arg1 = (System.EventHandler <GameFramework.Event.GameEventArgs>)ToLua.CheckObject(L, 3, typeof(System.EventHandler <GameFramework.Event.GameEventArgs>)); } else { LuaFunction func = ToLua.ToLuaFunction(L, 3); arg1 = DelegateFactory.CreateDelegate(typeof(System.EventHandler <GameFramework.Event.GameEventArgs>), func) as System.EventHandler <GameFramework.Event.GameEventArgs>; } obj.Subscribe(arg0, arg1); return(0); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
/// <summary> /// 初始化网络频道辅助器。 /// </summary> /// <param name="networkChannel">网络频道。</param> public void Initialize(INetworkChannel networkChannel) { m_NetworkChannel = networkChannel; //// 反射注册包和包处理函数。 //Type packetBaseType = typeof(SCPacketBase); //Type packetHandlerBaseType = typeof(PacketHandlerBase); //Assembly assembly = Assembly.GetExecutingAssembly(); //Type[] types = assembly.GetTypes(); //for (int i = 0; i < types.Length; i++) //{ // if (!types[i].IsClass || types[i].IsAbstract) // { // continue; // } // if (types[i].BaseType == packetBaseType) // { // PacketBase packetBase = (PacketBase)Activator.CreateInstance(types[i]); // Type packetType = GetServerToClientPacketType(packetBase.Id); // if (packetType != null) // { // Log.Warning("Already exist packet type '{0}', check '{1}' or '{2}'?.", packetBase.Id.ToString(), packetType.Name, packetBase.GetType().Name); // continue; // } // m_ServerToClientPacketTypes.Add(packetBase.Id, types[i]); // } // else if (types[i].BaseType == packetHandlerBaseType) // { // IPacketHandler packetHandler = (IPacketHandler)Activator.CreateInstance(types[i]); // m_NetworkChannel.RegisterHandler(packetHandler); // } //} // 获取框架事件组件 EventComponent Event = UnityGameFramework.Runtime.GameEntry.GetComponent <EventComponent>(); Event.Subscribe(NetworkConnectedEventArgs.EventId, OnNetworkConnected); Event.Subscribe(NetworkClosedEventArgs.EventId, OnNetworkClosed); Event.Subscribe(NetworkMissHeartBeatEventArgs.EventId, OnNetworkMissHeartBeat); Event.Subscribe(NetworkErrorEventArgs.EventId, OnNetworkError); Event.Subscribe(NetworkCustomErrorEventArgs.EventId, OnNetworkCustomError); }
private void Start() { BaseComponent baseComponent = GameEntry.GetComponent <BaseComponent>(); if (baseComponent == null) { Log.Fatal("Base component is invalid."); return; } m_EventComponent = GameEntry.GetComponent <EventComponent>(); if (m_EventComponent == null) { Log.Fatal("Event component is invalid."); return; } //添加一个OnOpenUIFormInitStart的事件 用来做热更新加载的 m_EventComponent.Subscribe(EventId.OpenUIFormInitStart, OnOpenUIFormInitStart); if (baseComponent.EditorResourceMode) { m_UIManager.SetResourceManager(baseComponent.EditorResourceHelper); } else { m_UIManager.SetResourceManager(GameFrameworkEntry.GetModule <IResourceManager>()); } m_UIManager.SetObjectPoolManager(GameFrameworkEntry.GetModule <IObjectPoolManager>()); m_UIManager.InstanceAutoReleaseInterval = m_InstanceAutoReleaseInterval; m_UIManager.InstanceCapacity = m_InstanceCapacity; m_UIManager.InstanceExpireTime = m_InstanceExpireTime; m_UIManager.InstancePriority = m_InstancePriority; UIFormHelperBase uiFormHelper = Helper.CreateHelper(m_UIFormHelperTypeName, m_CustomUIFormHelper); if (uiFormHelper == null) { Log.Error("Can not create UI form helper."); return; } uiFormHelper.name = string.Format("UI Form Helper"); Transform transform = uiFormHelper.transform; transform.SetParent(this.transform); transform.localScale = Vector3.one; m_UIManager.SetUIFormHelper(uiFormHelper); if (m_InstanceRoot == null) { m_InstanceRoot = (new GameObject("UI Form Instances")).transform; m_InstanceRoot.SetParent(gameObject.transform); m_InstanceRoot.localScale = Vector3.one; } m_InstanceRoot.gameObject.layer = LayerMask.NameToLayer("UI"); for (int i = 0; i < m_UIGroups.Length; i++) { if (!AddUIGroup(m_UIGroups[i].Name, m_UIGroups[i].Depth)) { Log.Warning("Add UI group '{0}' failure.", m_UIGroups[i].Name); continue; } } }