lua热更新实际上就是将lua语音字符串转为类方法进行调用,也可以理解为反射,将字符串转为类或者方法,然后去调用对应方法。
我们打开ToLua/Examples/01_HelloWorld下的HelloWorld场景,运行一下,可以看到一系列的内容打印。
我看接下来看看并分析下其运行的脚本,打开ToLua/Examples/01_HelloWorld下的HelloWorld类文件。
using UnityEngine;
using LuaInterface;
using System;
public class HelloWorld : MonoBehaviour
{
void Awake()
{
//初始化状态
LuaState lua = new LuaState();
//调用状态开始方法
lua.Start();
//lua语音 打印字符串
string hello =
@"
print('hello tolua#')
";
//执行lua字符串语句
lua.DoString(hello, "HelloWorld.cs");
//检查语句
lua.CheckTop();
//lua资源回收
lua.Dispose();
lua = null;
}
}
LuaState lua = new LuaState();
lua.Start();
这两句话打印了如下信息:
Init lua state cost: 0.05276728 ==> 初始化时间
LuaState start ==> 方法内部打印
[tolua.lua:11]:ver20100 jit: true SSE2 SSE3 SSE4.1 BMI2 fold cse dce fwd dse narrow loop abc sink fuse ==> 状态
[tolua.lua:12]:os: Windows, arch: x64 ==> 运行平台
string hello =
@"
print('hello tolua#')
";
lua.DoString(hello, "HelloWorld.cs");
[HelloWorld.cs:2]:hello tolua# ==> 打印的语句
lua.CheckTop();
lua.Dispose();
lua = null;
LuaState destroy ==> 资源回收