protected internal void OnDestroy() { if (!_Destroyed) { _Destroyed = true; if (luaOnDestroy != null) { luaOnDestroy(lua); } luaOnDestroy = null; if (luaOnDestroyBase != null) { luaOnDestroyBase(lua); } luaOnDestroyBase = null; luaStart = null; if (ex != null) { ex.Dispose(); ex = null; } if (lua != null) { lua.Dispose(); lua = null; } } }
void Init() { if (selfBehaviourInitialized || string.IsNullOrEmpty(InitLuaPath)) { return; } if (!isInitialized) { InitLuaEnv(); } ex = luaEnv.NewTable(); foreach (var injection in ExpandExVal()) { ex.SetInPath(injection.Key, injection.Value); } var ret = luaEnv.DoString(@"return require '" + InitLuaPath + "'", InitLuaPath); LuaTable baseTable = null; if (ret.Length > 0) { baseTable = ret[0] as LuaTable; } if (baseTable != null) { lua = luaEnv.NewTable(); lua.Set("___ex", ex); lua.Set("___cs", this); LuaTable mt = luaEnv.NewTable(); var getmtFunc = luaEnv.Global.GetInPath <GetMtFunc>("behaviour.getmt"); var indexFunc = getmtFunc.Invoke(baseTable); mt.Set("__index", indexFunc); lua.SetMetaTable(mt); LuaBehaviourFunc luaCtor = lua.Get <LuaBehaviourFunc>("ctor"); lua.Get("start", out luaStart); lua.Get("onDestroy", out luaOnDestroy); lua.Get("_onDestroy", out luaOnDestroyBase); //if (luaOnDestroyBase == null) //{ // BuglyAgent.PrintLog(LogSeverity.LogWarning, "Can't find _onDestroy function. {0} should be based on behavior.lua", InitLuaPath); //} selfBehaviourInitialized = true; if (luaCtor != null) { luaCtor(lua); } } }
protected void OnDestroy() { luaOnEnable = null; luaOnDisable = null; }
protected void OnDestroy() { luaUpdate = null; }