热补丁配置
第一步骤:类库准备
在含有xlua的工程中,把一个Tools 的目录拷贝到本项目中,不是放在Assets 中。
(注意tools 目录与Assets 平级关系)
然后把插件目录下的Tools 文件下的Mono.Cecil.dll,Mono.Cecil.Mdb.dll,Mono.Cecil.Pdb.dll 放到项目下的E:\UnityProgram\LearnHotUpdate\Assets\XLua\Src\Editor 文件目录下
第二步骤:配置宏环境
Unity编辑器 file--> Build Setting--> Player Setting --> OtherSettings ---
-->Scripting Define Symbols[代码定义标识] 写入:"HOTFIX_ENABLE "
---> 然后(一定)回车确认。
第三步骤:
执行完成上面内容后,在Xlua菜单中,就会多一个“Hotfix Inject In
Editor”的选项。
第四步骤:
点击菜单“Xlua”--> “Generate Code”
(注意:凡是增加与更新[XLua.Hotfix]标记的C#代码,都需要执行一遍)
第五步骤:
执行菜单“xlua”-->"Hotfix inject in Editor" ,把生成的代码,注
入的编辑器中。
测试1
在unity 新建一个按钮,按钮绑定InvokeInLua 。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
// 测试“HotFix 技术”
// 本质就是 lua中定义的方法,来替换出现bug的C#脚本(类)
//写完要生成代码 然后在菜单XLua-Hotfix inject in Editor
namespace HotUpdateModel
{
[Hotfix]
public class TestHotFix1 : MonoBehaviour {
LuaEnv luaEnv = new LuaEnv();
// Use this for initialization
void Start () {
Debug.Log("测试lua中的‘热补丁’ 技术");
//执行一个调用函数
InvokeRepeating("InvokeInCsharp", 1F, 2F);
}
//调用函数
void InvokeInCsharp()
{
Debug.Log("在C#中执行的方法");
}
//lua语言执行的内容
public void InvokeInLua()
{
Debug.Log("准备lua调用");
luaEnv.DoString(@"xlua.hotfix(
CS.HotUpdateModel.TestHotFix1,'InvokeInCsharp',function()
print('在lua中执行的方法')
end
)");
}
}
}
测试2
在unity 新建2个按钮,一个绑定InvokeInCsharp,一个绑定InvokeInLua
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
//写完要在菜单XLua-Generate Code,然后在菜单XLua-Hotfix inject in Editor
namespace HotUpdateModel
{
[Hotfix]
public class TestHotFix2 : MonoBehaviour {
LuaEnv luaEnv = new LuaEnv();
// Use this for initialization
void Start()
{
Debug.Log("测试lua中的‘热补丁’ 技术");
}
//调用函数
public void InvokeInCsharp()
{
Debug.Log("TestHotFix2 在C#中执行的方法");
}
//lua语言执行的内容
public void InvokeInLua()
{
Debug.Log("准备lua调用");
luaEnv.DoString(@"xlua.hotfix(
CS.HotUpdateModel.TestHotFix2,'InvokeInCsharp',function()
print('TestHotFix2 这是在lua中执行的方法')
end
)");
}
}
}