Example #1
0
        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");
        }
Example #2
0
        public void Destroy()
        {
            OnDestroy.Call();
            TempBindingExpressCache.Clear();
            OnVMQuiting?.Invoke();

            m_newClassCallback = null;
            OnInit             = null;
            OnDestroy          = null;
            OnVMCreated        = null;
            OnPreRequestLoaded = null;
            OnVMQuiting        = null;
            GC.Collect();
        }