UH2S3L2——toLua解析器

本章代码关键字

1
2
3
4
5
6
7
LuaState                //Lua解析器类,初始化lua解析器只需要new它
luaState.Start() //启动lua解析器
luaState.DoString() //执行一个字符串形式的Lua语句
luaState.DoFile() //执行指定路径下的lua脚本(可加可不加.lua后缀)
luaState.Require() //执行指定路径下的lua脚本(不可加.lua后缀)
luaState.CheckTop() //检查lua解析器栈顶是否为空,销毁lua解析器前必须要执行该方法
luaState.Dispose() //销毁lua解析器

toLua解析器

toLua同样提供了一个Lua解析器(虚拟机)对象用来执行lua代码和脚本

初始化并启动一个Lua解析器

toLua的解析器只需要new出来然后执行start()​方法即可

1
2
LuaState luaState = new LuaState();
luaState.Start();

执行一句Lua语句

执行字符串形式的lua代码,第二个参数可以指明出处,方便调试时查看问题

1
2
luaState.DoString("print('你好世界')");
luaState.DoString("print('你好世界')", "L1_LuaState.cs");

执行Lua脚本

ToLua在不设置的情况下,默认可以执行Assets/Lua文件夹下的Lua脚本,执行脚本有两种方法

  • DoFile()

    传入脚本文件名,.lua后缀可加可不加

    1
    luaState.DoFile("Main.lua");
  • Require()

    传入脚本文件名,不要加.lua后缀

    1
    luaState.Require("Main");

对于如何执行其他路径下的Lua脚本,请看:UH2S3L3——toLua解析器自定义解析方式

销毁Lua解析器

销毁Lua解析器之前需要先检查解析器栈顶是否为空,然后才能销毁

  • 检查Lua解析器栈顶是否为空

    1
    luaState.CheckTop();
  • 销毁Lua解析器

    1
    2
    luaState.Dispose();
    luaState = null;