UE4 Unlua源码解析10 - Lua怎么替换BlueprintImplementableEvent或BlueprintNativeEvent的方法实现的

本文详细解析了UE4中UnLua如何用Lua函数覆盖BlueprintImplementableEvent和BlueprintNativeEvent的方法实现。通过OverrideFunctions函数,UnLua备份原UFunction并用Lua方法进行替换。在覆盖过程中,关键步骤包括备份原函数、存储映射关系、调用OverrideUFunction以及执行CallLua核心代码,实现lua函数的调用并处理返回值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lua怎么替换BlueprintImplementableEvent或BlueprintNativeEvent的方法实现的


时机发生在UUnLuaManager中绑定UObject和Lua Object的时候,具体到函数是BindInternal

在这里插入图片描述

648-649行是拿到所有的Lua方法,并且存储到LuaFunctions里,650-651行拿到所有的UE的所有BlueprintEvent和RepNotify方法,存起来,然后最重要的函数OverrideFunctions中,其实就是本小节的答案所在,在这个函数里用Lua的函数覆盖BlueprintImplementableEventBlueprintNativeEvent的方法

/**
 * Override candidate UFunctions
 */
void UUnLuaManager::OverrideFunctions(const TSet<FName> &LuaFunctions, TMap<FName, UFunction*> &UEFunctions, UClass *OuterClass, bool bCheckFuncNetMode)
{
    for (const FName &LuaFuncName : LuaFunctions)
    {
        UFunction **Func = UEFunctions.Find(LuaFuncName);
        if (Func)
        {
            UFunction *Function
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

珞珈大胖强TURBO

谢谢兄弟们,我会一直努力出货的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值