Unlua源码二:UE的委托是如何转发到Lua的

上一篇文章说到可以给C++类绑定一个对应的Lua脚本,这个Lua脚本对应的table也可以像C++类一样拿到对应的委托来绑定,拿UI蓝图对应的脚本举个例子,假如要绑定Onclicked事件到对应的Lua函数,这个过程是怎么生效的呢?

 

我们可以在LuaLib_MulticastDelegate.cpp中发现一些端倪

这里完成了把Lua中委托的函数接管的过程,比如说Add,现在会指向TMulticastDelegateLib<FMulticastScriptDelegate>::Add。

接下来我们看下Add做了什么操作

由于我们是第一次Add,所以会做到if分支里面去,这里会把回调函数假如到全局的注册表里去,并且把对应的索引拿到再调用FDelegateHelper::Add

 经过Add的一次重载函数转发,会调用到下面的Add函数。注意,这里会多一个新的参数是FMulticastDelegateProperty,看一下定义

 这个类保存了一系列的绑定到这个Object的Function,暂时我们还没get到他的用处,可以把他当成是一个delegate的属性,与object和delegate有关。

可以看到Add函数主要做了三件事,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值