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