LuaState(slua-unreal)

大纲

  • 简述LuaState
  • LuaState的创建和使用

简述LuaState

luastate是可见的lua vm实例,在luastate上还有一层globalstate的,luastate之间是存在环境隔离的,只有少部分是可以共享的;以下是luastate的结构

在上面的代码中,能看到一个比较重要的点:

  • 共享的global_State

通常在lua的使用中,一般而言一个thread使用的是一个lua state,而lua state之间的数据共享,除非你有其他的思路,要不然基本都比较麻烦;目前知道的是skynet是改过后,才实现luastate间通信的!

LuaState的创建和使用

这里只说slua-unreal中的luastate方面的!

  • LuaState的创建
luaState = new NS_SLUA::LuaState("MainState", gameinstance);

这里的GameInstance是必须的,MainState指的是当前创建的luastate的名称。slua-unreal一般是建议在游戏的GameInstance中继承LuaState,我这里仅仅是说明,并不是一定要这样!

上面创建完成luastate后,还需要对luastate进行初始化和一些选择性的处理!

luaState->init()

到这里,luastate的简单创建已经完成了!

  • LuaState的使用

前文的luastate已经创建完成了,那么要如何使用?这里先简单说一下:

luaState->doString("printf('hello world')")

直接通过dostring方法就能使用了!

还有其他的方式,比如调用lua文件等,这里就不做说明,会在其他文档作说明!