Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions Plugins/UnLua/Source/UnLua/Private/LuaFunction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,18 @@ DEFINE_FUNCTION(ULuaFunction::execCallLua)
// PIE 结束时可能已经没有Lua环境了
return;
}

// 如果调用的 ULuaFunction 来自父类,且与对象的 UClass 不是同一个类。
// 这就是为什么我们跳过调用 Lua 端,而是调用被重写的函数,以防止继承相关的 bugs
if (LuaFunction->GetOverriddenUClass() != Context->GetClass())
{
const auto Overridden = LuaFunction->GetOverridden();
if (Overridden)
{
Context->CallFunction(Stack, RESULT_PARAM, Overridden);
}
return;
}
Env->GetFunctionRegistry()->Invoke(LuaFunction, Context, Stack, RESULT_PARAM);
}

Expand All @@ -46,6 +58,18 @@ DEFINE_FUNCTION(ULuaFunction::execScriptCallLua)
// PIE 结束时可能已经没有Lua环境了
return;
}

// 如果调用的 ULuaFunction 来自父类,且与对象的 UClass 不是同一个类。
// 这就是为什么我们跳过调用 Lua 端,而是调用被重写的函数,以防止继承相关的 bugs
if (LuaFunction->GetOverriddenUClass() != Context->GetClass())
{
const auto Overridden = LuaFunction->GetOverridden();
if (Overridden)
{
Context->CallFunction(Stack, RESULT_PARAM, Overridden);
}
return;
}
Env->GetFunctionRegistry()->Invoke(LuaFunction, Context, Stack, RESULT_PARAM);
}

Expand Down