UnityEngine.Object
重写了==
运算符和!=
运算符。
// // Operators // public static bool operator == (Object x, Object y); public static bool operator != (Object x, Object y);
当GameObject被销毁后,Class类并不是真正null
,只是使用==
运算符和!=
运算符时,Unity会把它当作null
值处理。
Lua代码
local go = CS.UnityEngine.GameObject('go') CS.UnityEngine.GameObject.DestroyImmediate(go) if (go ~= nil) then go.name = 'xxx' end
在LUA里游戏对象在销毁后的判空实际上是有问题的。LUA示例代码里go不会为nil
解决方案就是在C#代码里扩展一个判空的方法,然后在LUA里调用该方法。
注意事项
UnityEngine.GameObject go = new UnityEngine.GameObject(); Debug.Log(go == null); // false UnityEngine.Object obj = new UnityEngine.Object(); Debug.Log(obj == null); // true