展示了最小的tolua#环境,以及执行一段lua代码。
「1」代码
操作代码如下:
using UnityEngine;
using LuaInterface;
using System;
public class HelloWorld : MonoBehaviour
{
void Awake()
{
LuaState lua = new LuaState();
lua.Start();
string hello =
@"
print('hello tolua#')
";
lua.DoString(hello, "HelloWorld.cs");
lua.CheckTop();
lua.Dispose();
lua = null;
}
}
「2」需要了解的部分
- 首先说一下整体的感受:整体的逻辑比较简单,使用ToLua的相关类和方法都要调用命名空间
LuaInterface
,而调用Lua脚本必须先要创建一个虚拟机,就是LuaState lua = new LuaState();
,这个例子使用了lua.DoString()
的方法执行一段Lua脚本,运行完后用lua.Dispose()
释放掉。
「3」值得注意的方法
-
LuaState.Start
负责初始化LuaState,包括环境配置和基本库加载。它需要在tolua代码加载到内存后调用。如果使用assetbunblde加载lua文件,调用Start()之前assetbundle必须加载好。 -
LuaState.Dostring
负责执行一段Lua代码,除了例子较少使用这种方法加载代码,它无法避免代码重复加载覆盖,需要调用者自己保证。第二个参数用于调试信息,用于提示出错代码所在的文件名称。 -
LuaState.CheckTop
检查堆栈是否平衡,一般放在Update中,C#中任何使用lua堆栈操作,都需要调用者自己平衡堆栈(参考LuaFunction以及LuaTable代码), 当CheckTop出现警告时其实早已经离开了堆栈操作范围,这时需自行review代码。 -
LuaState.Dispose
释放LuaState以及其资源。
网友评论