Beispiel #1
0
    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));
        }
    }
Beispiel #2
0
        /// <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;
                }
            }
        }