Esempio n. 1
0
    protected IEnumerator doBind(LuaManager manager)
    {
        IntPtr L = manager.luaState.L;

        LuaObject.init(L);

        yield return(null);

        List <Action <IntPtr> > bindList = new List <Action <IntPtr> >();
        Assembly assembly = Assembly.Load("Assembly-CSharp");

        bindList.AddRange(getBindList(assembly, "SLua.BindUnity"));
        bindList.AddRange(getBindList(assembly, "SLua.BindUnityUI"));
        bindList.AddRange(getBindList(assembly, "SLua.BindDll"));
        bindList.AddRange(getBindList(assembly, "SLua.BindCustom"));

        yield return(null);

        int n = 0;

        while (n < bindList.Count)
        {
            int i = n;
            for (; i < n + 20 && i < bindList.Count; i++)
            {
                Action <IntPtr> bindAction = bindList[i];
                bindAction(L);
            }
            n = i;

            yield return(null);
        }
        Debug.Log("<LuaManager> lua state bind " + n + " items");

        Helper.reg(L);
//		LuaValueType.reg(L);
        LuaDLL.luaS_openextlibs(L);

        yield return(null);

        Lua3rdDLL.open(L);

        yield return(null);

        if (LuaDLL.lua_gettop(luaState.L) != errorReported)
        {
            Debug.LogError("<LuaManager> Some function not remove temp value from lua stack, You should fix it");
            errorReported = LuaDLL.lua_gettop(luaState.L);
        }
        else
        {
            LuaState.loaderDelegate += loaderHandle;
            LuaState.logDelegate    += logHandle;

            Debug.Log("<LuaManager> lua state get ready");
            isReady = true;
        }
    }
Esempio n. 2
0
        private void _doinit(IntPtr _luaState, LuaSvrFlag _flag)
        {
            //LuaTimer.reg( _luaState );
#if UNITY_EDITOR
            if (UnityEditor.EditorApplication.isPlaying)
#endif
            LuaCoroutine.reg(_luaState, this);
            SLua.Helper.reg(_luaState);
            if (SLuaSetting.Instance.useLuaValueType)
            {
                LuaValueType.reg(_luaState);
            }

            if ((_flag & LuaSvrFlag.LSF_EXTLIB) != 0)
            {
                LuaDLL.luaS_openextlibs(_luaState);
            }
            if ((_flag & LuaSvrFlag.LSF_3RDDLL) != 0)
            {
                Lua3rdDLL.open(_luaState);
            }

            Inited = true;
        }