Uniyt热更新——LuaFrameWork学习(三)判断unity里对象为空

在游戏制作过程中我们经常会Destroy一些没用的GameObject,那么在ulua里我们怎么样来判断我们的引用被Destroy了呢,这里要感谢阿盟哥,他已经为我们解决了这个问题,在他写的 Global.lua里,代码如下:
function IsNil(uobj)
    return uobj == nil or uobj:Equals(nil)
end

只要将要判断的对象传进来就行了。好,我们来看个例子吧,lua代码如下:

function Main()					
	local GameObject =  UnityEngine.GameObject;
	
	local go = GameObject('go');
	
	local node = go.transform;
	node.position = Vector3.one;
	GameObject.Destroy(go);
	if go:Equals(nil) then
		print("go is nil");
	end
	--[[print('gameobject is :'..tostring(go));--]]
end

function IsNil(uobj)
    return uobj == nil or uobj:Equals(nil)
end
我这个是在LuaFrameword框架下运行的,结果不用说大家都知道就是打印 go is nil 这句话。

原先我的判断代码不是这样的我的是用go==nil 来判断的但是结果是false,而用go:Equals(nil)的结果是true;这个让我一时不知道是怎么一回事,后来通过百度让我想到了引用;引用变量存储的是对象的内存地址,对象销毁时内存还没有回收,也就是说go存储原来的内存地址,那他就不会等于nil了;而Equals是比较两个对象的状态,所以go == nil 是false,go:Equals(nil)的结果是true。

OK,今天就到这里,有兴趣的朋友可以去这里看看或许里面有你想要的  http://bbs.ulua.org/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值