Lesson9_Lua调用C#_nil与null

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

posted @ 2024-02-29 21:24  波奇型蠢驴  阅读(45)  评论(0)    收藏  举报