public void Dispose() { if (scriptIsReady) { if (true || !is_OnDisable) { is_OnDisable = true; LuaController.RemoveEventListener(luaObject); } } started = false; scriptIsReady = false; if (l_OnDestroy != null && L != null) { l_OnDestroy(luaObject); } l_Start = null; l_OnDestroy = null; l_Update = null; l_onEvent = null; l_OnDisable = null; l_OnEnable = null; l_OnApplicationPause = null; if (L != null && luaObject != null) { luaObject.Dispose(); } luaObject = null; }
void OnDestroy() { if (luaOnDestroy != null) { luaOnDestroy(scriptEnv); } luaOnDestroy = null; luaUpdate = null; luaStart = null; scriptEnv.Dispose(); }
public void StartWithScript(string luaScriptFileName, LuaTable luaObject, params object[] args) { this.luaScriptFileName = luaScriptFileName; if (args != null) { this.args = args; } // release old object if (this.luaObject != null && this.luaObject != luaObject) { this.luaObject.Dispose(); l_Awake = null; l_OnDestroy = null; l_Update = null; l_onEvent = null; } if (luaObject == null && !string.IsNullOrEmpty(luaScriptFileName)) { luaObject = loadDelegate(); } this.luaObject = luaObject; if (this.luaObject == null) { return; } luaObject.Set("gameObject", gameObject); foreach (var injection in injections) { luaObject.Set(injection.name, injection.value); } l_Awake = luaObject.Get <LuaObjectAction>("Awake"); l_Start = luaObject.Get <LuaOnAction>("Start"); l_OnDestroy = luaObject.Get <LuaOnAction>("OnDestroy"); l_Update = luaObject.Get <LuaOnAction>("Update"); l_onEvent = luaObject.Get <LuaObjectAction>("onEvent"); luaAwake(); }
public void Call(string eventName, params object [] param) { if (scriptIsReady) { LuaObjectAction act = luaObject.Get <LuaObjectAction>(eventName); if (act != null) { act(luaObject, param); } } else { CallInfo info = new CallInfo(); info.eventName = eventName; info.param = param; _callAfterStart.Add(info); } }
public void onEvent(string eventName) { if (luaObject == null) { return; } LuaObjectAction act = luaObject.Get <LuaObjectAction>(eventName); if (act != null) { act(luaObject); } else if (l_onEvent != null) { l_onEvent(luaObject, eventName); } }
void OnDestroy() { if (l_OnDestroy != null && L != null) { l_OnDestroy(); } l_Awake = null; l_Start = null; l_OnDestroy = null; l_Update = null; l_onEvent = null; if (L != null && luaObject != null) { luaObject.Dispose(); } luaObject = null; }
void OnDestroy() { if (luaOnDestroy != null) { luaOnDestroy(); } luaOnDestroy = null; luaUpdate = null; luaStart = null; try { luaObject.Dispose(); } catch (System.Exception e) { Debug.Log(e.Message + "\n" + e.StackTrace); } injections = null; }
void Awake() { // scriptEnv = LuaController.Instance.LuaEnv.NewTable(); if (luaScript != "") { string path = "require '(" + luaScript + ")'"; object[] obs = LuaController.Instance.LuaEnv.DoString(path, "LuaTestScript", luaObject); luaObject = obs[0] as LuaTable; } if (luaObject == null) { Debug.Log("Lua loader error"); return; } // 为每个脚本设置一个独立的环境,可一定程度上防止脚本间全局变量、函数冲突 //LuaTable meta = LuaController.Instance.LuaEnv.NewTable(); //meta.Set("__index", LuaController.Instance.LuaEnv.Global); //scriptEnv.SetMetaTable(meta); //meta.Dispose(); luaObject.Set("gameObject", gameObject); foreach (var injection in injections) { luaObject.Set(injection.name, injection.value); } LuaObjectAction luaAwake = luaObject.Get <LuaObjectAction>("Awake"); LuaObjectAction luaStart = luaObject.Get <LuaObjectAction>("Start"); LuaObjectAction luaUpdate = luaObject.Get <LuaObjectAction>("Update"); LuaObjectAction luaOnDestroy = luaObject.Get <LuaObjectAction>("OnDestroy"); Debug.Log(luaStart); if (luaAwake != null) { luaAwake(); } }
public void Init() { print("===============" + gameObject); print(table); table.Set("gameObject", gameObject); _Awake = table.Get <LuaObjectAction>("Awake"); _Start = table.Get <LuaObjectAction>("Start"); _Update = table.Get <LuaObjectAction>("Update"); if (_Awake != null) { if (args != null) { _Awake(table, args); } else { _Awake(table); } //this.gameObject.AddComponent("Lua") } }
public LuaTable LoadScript(string luaScriptFileName, LuaTable i_luaObject, params object [] args) { this.luaScriptFileName = luaScriptFileName; this.args = args; // release old object if (luaObject != null && luaObject != i_luaObject) { OnDisable(); luaObject.Dispose(); l_Start = null; l_OnDestroy = null; l_Update = null; l_onEvent = null; luaObject = null; } bool needPreload = false; if (i_luaObject != null && luaObject != i_luaObject) { luaObject = i_luaObject; needPreload = true; } else if (!string.IsNullOrEmpty(luaScriptFileName)) { luaObject = loadDelegate(luaScriptFileName); needPreload = true; } if (luaObject == null) { return(null); } luaObject.Set("gameObject", gameObject); luaObject.Set("LuaBehaviour", this); l_Start = luaObject.Get <LuaObjectAction>("Start"); l_OnEnable = luaObject.Get <LuaObjectAction>("OnEnable"); l_OnDisable = luaObject.Get <LuaObjectAction>("OnDisable"); l_OnDestroy = luaObject.Get <LuaObjectAction>("OnDestroy"); l_Update = luaObject.Get <LuaObjectAction>("Update"); l_onEvent = luaObject.Get <LuaObjectAction>("onEvent"); l_OnApplicationPause = luaObject.Get <LuaObjectAction>("OnApplicationPause"); if (needPreload) { LuaObjectAction preload = luaObject.Get <LuaObjectAction>("OnPreload"); if (preload != null) { if (args != null) { preload(luaObject, args); } else { preload(luaObject); } } preload = null; } needCallLuaStart = true; luaStart(); return(luaObject); }