public void Initialize() { Default = new LuaEnv(); LuaClassCache = new LuaClassCache(); m_newClassCallback = OnLuaNewClass; #if UNITY_EDITOR Default.AddLoader((ref string filename) => LoadFile(ref filename, ".lua")); #else Default.AddLoader((ref string filename) => LoadFile(ref filename, ".lua")); #endif var setupNewCallback = LoadFileAtPath("base.class")[0] as LuaFunction; setupNewCallback.Action(m_newClassCallback); OnVMCreated?.Invoke(); var ret = LoadFileAtPath("PreRequest")[0] as LuaTable; OnInit = ret.Get <LuaFunction>("init"); OnDestroy = ret.Get <LuaFunction>("shutdown"); OnPreRequestLoaded?.Invoke(); #if UNITY_EDITOR if (reportLeakMark) { leakData = Default.StartMemoryLeakCheck(); } #endif AssetService.Get().AddAfterDestroy(this); DestroyedTableMeta = Global.Get <LuaTable>("DestroyedTableMeta"); }
public void Destroy() { OnDestroy.Call(); TempBindingExpressCache.Clear(); OnVMQuiting?.Invoke(); m_newClassCallback = null; OnInit = null; OnDestroy = null; OnVMCreated = null; OnPreRequestLoaded = null; OnVMQuiting = null; GC.Collect(); }