热补丁的基本原理非常简单,了解后任何程序员都很容易分析出开销,比如对于这个类
[hotfix]
public class Calc
{
int Add(int a, int b)
{
return a + b;
}
}
打开了hotfix标签后,Xlua会在il层面注入代码(触发编译后),注入之后这个类是类似这样:
public class Calc
{
static Func<object, int, int, int> hotfix_Add = null;
int Add(int a, int b)
{
if (hotfix_Add != null) return hotfix_Add(this, a, b);
return a + b;
}
}
如果lua中执行了hotfix调用,hotfix_Add会指向一个Lua的适配函数
xlua.hotfix(CS.Calc, 'add',function(a,b)
print('Update in lua')
end)