引用(https://jacx.net/2015/11/20/dont-use-equals-null-on-unity-objects.html)
这其实就是问题出现的主要原因,Unity是一个用C#包装起来的C++引擎,他提供的Destory方法只是把C++部分的非托管资源释放了,在C#中的托管资源要等GC自己去释放。
因为Unity重载了UnityEngine.Object的==方法,所以在C#中使用 if ( obj == null)是没问题的。但是通过LUA调用时,C#对象可能还或者,但他的灵魂已经消失了。
记住一点,不要直接在lua中使用 if obj == nil 来判断空值就可以了。
更具体的信息,可以参考上面发的文章,介绍的非常清晰。