【C#/Lua】
问题
Unity中的GameObject在C#层面判空为true,但是在Lua层面并不等于nil。
原因
Unity里的Object采用的是两层模型(https://developer.unity.cn/projects/693922a0edbc2af1c82a6761),本质是个「包装器(wrapper object)」,它的 C# 实例只是个"代理",真正干活的是背后的 C++ 原生对象。当某个对象为空的时候,
解决方案
通过真正销毁Object
可以吗?
通过C#层面的==来判断实际的native对象是否为空
function cs_is_null(obj)
return CS.LuaUtility.IsNull(obj)
end
public class LuaUtility
{
// 变量是否为空的判断由C#来做比较保险
public static bool IsNull(UnityEngine.Object o)
{
return o == null;
}
}

浙公网安备 33010602011771号