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; } }
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; }