try to dispose a LuaEnv with C# callback!

luaEnv.DoString("require 'xxxx'");
Action act1 = luaEnv.Global.Get<Action>("add");
act1();
act1 = null;
luaEnv.Dispose();

为什么act1=null了
还是会报这个错误

我已经找到答案了,是因为C#的GC回收机制导致的,因为实在同一帧,所以即使写了act1 = null;但是并不是真的被释放了,你可以这样写:

    [XLua.CSharpCallLua]
    public delegate double LuaMax(double a, double b);

    private XLua.LuaEnv luaEnv = null;

    void Start()
    {
        luaEnv = new XLua.LuaEnv();
        luaEnv.DoString("CS.UnityEngine.Debug.Log('hello world')");
        //luaenv.dispose();  不要写在这里
        LuaMax max = luaEnv.Global.GetInPath<LuaMax>("math.max");
        Debug.Log("max:" + max(32, 12));
        max = null;
    }

    private void OnDisable()
    {
        if (luaEnv != null)
        {
            luaEnv.Dispose();
            luaEnv = null;
        }
    }

 

我也是这样写的,但是也报错,如果你找到了解决办法,请教我一下,谢谢