上一篇文章说到可以给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函数主要做了三件事,