lua中的nil 与 c#的null
GameObject=CS.UnityEngine.GameObject
RigidBody=CS.UnityEngine.RigidBody
local obj = GameObject("测试加脚本")
local rig = obj:GetComponent(typeof(RigidBody)) //尝试获得物体上的刚体,但其实并没有,所以C#那里返回了null
--判断rig为不为空
if rig ==nil then
--虽然c#那里为空,但其实并没有进入if语句,所以nil并不等于c#中的null
rig=obj:AddComponent(typeof(RigidBody))
end
--这样写可以判断 调Gameobject里的方法去比较
if rig:Equals(nil) then
rig=obj:AddComponent(typeof(RigidBody))
end
if ~IsNull(rig) then --调用lua中写的判空方法(实现在下方),也可以去c#给Gameobject拓展一个判空方法,然后让lua去调用 注:~是Lua中的取反符号
print("123")
end
IsNull实现(建议写到一个专门放置全局变量的脚本中)
function IsNull(obj)
if obj ==nil or obj:Equals(nil) then
return true
end
return false
end