public virtual void Destroy() { if (luaState != null) { #if UNITY_5_4 SceneManager.sceneLoaded -= OnSceneLoaded; #endif LuaState state = luaState; luaState = null; if (levelLoaded != null) { levelLoaded.Dispose(); levelLoaded = null; } if (loop != null) { loop.Destroy(); loop = null; } state.Dispose(); Instance = null; } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); serializedObject.Update(); LuaBehaviour behaviour = (target as LuaBehaviour); if (GUILayout.Button("GetArgs")) { reflectDict.Clear(); keyDic.Clear(); LuaState luaState = new LuaState(); luaState.Start(); luaState.OpenLibs(LuaDLL.luaopen_pb); luaState.OpenLibs(LuaDLL.luaopen_struct); luaState.OpenLibs(LuaDLL.luaopen_lpeg); luaState.LuaGetField(LuaIndexes.LUA_REGISTRYINDEX, "_LOADED"); luaState.OpenLibs(LuaDLL.luaopen_cjson); luaState.LuaSetField(-2, "cjson"); luaState.OpenLibs(LuaDLL.luaopen_cjson_safe); luaState.LuaSetField(-2, "cjson.safe"); LuaBinder.Bind(luaState); LuaSupport.AddSearchPath(luaState); luaState.Require("Define"); luaState.DoFile(behaviour.luaFileName); string ctorName = behaviour.luaFileName + ".create"; LuaFunction luaClassCreate = luaState.GetFunction(ctorName); LuaTable luaClass = luaClassCreate.Call(behaviour.gameObject)[0] as LuaTable; LuaTable luaClassArgs = luaClass["initParamNames"] as LuaTable; for (int i = 1; i <= luaClassArgs.Length; i++) { Debug.Log("show args:" + i + ",args:" + luaClassArgs[i]); string fullArgs = Convert.ToString(luaClassArgs[i]); string[] typeArr = fullArgs.Split(new char[] { '=' }); string typeName = typeArr[0]; string t = typeArr[1]; UnityEngine.Object obj = default(UnityEngine.Object); if (!reflectDict.ContainsKey(typeName)) { reflectDict.Add(typeName, obj); keyDic.Add(typeName, t); } } luaState.Dispose(); } Save(); Load(); Draw(); }
protected void Awake() { Instance = this; Init(); #if UNITY_5_4 SceneManager.sceneLoaded += OnSceneLoaded; #endif }