Skip to content

Latest commit

 

History

History
44 lines (23 loc) · 1.12 KB

How_To_Implement_Overriding.md

File metadata and controls

44 lines (23 loc) · 1.12 KB

概述

零胶水代码替换各种蓝图和通知事件是 UnLua 的主要功能之一。本文主要介绍这套机制的原理,以及其对应的两种方案。


Thunk 函数替换

UFunction的Thunk函数

THUNK_FUNC

这里的 Func 就是所谓的 thunk 函数。

UFunction的调用

UOBJECT_PROCESSEVENT

UFUNCTION_INVOKE

假设我们有一个函数可以调用Lua,用它可以替换掉引擎里默认的thunk函数,就相当于覆盖了UFunction的实现。


Opcode 注入

另外还有一种方式来调用非原生的UFunction:

UOBJECT_CALLFUNCTION

这种情况下替换thunk函数是没有用的,但我们可以向UFunction注入一些 特殊的Opcode 来实现覆盖。

定义新Opcode

NEW_OPCODE

注册新Opcode

OPCODE_REGISTRAR

注入UFunction

OPCODE_INJECTION

CUSTOMIZED_THUNK_FUNC