uLua注意事项

uLua是一种unity热更新解决方案。但是在使用过程中遇到了部分问题,记录如下:

  1. Android采用luajit(2.0.4), IOS采用luac(v5.1.3)。在lua语法上是兼容的,但是IOS需要支持32位和64位,在编译字节码的时候出现了bad header in precompiled chunk的错误。最后抛弃了字节码的方式,采用自加密的方法
  2. c#中dofile(xx.lua), 如果之后再require(xx.lua)之后,引擎会直接crash.
  3. c#中缓存了LuaTable, LuaFunction,但是LuaState释放了,再调用LuaFunction就会crash.
  4. c#中的“-1”,到lua中变成了unit32.maxValue(4294967295),导致逻辑bug。分析原因后发现,在IOS中
lua_pushinteger(lua_State *,lua_Integer n)

这里的lua_Integer,在32位系统是int, 64位系统是long