-
Notifications
You must be signed in to change notification settings - Fork 873
常见问题
topameng edited this page Nov 20, 2019
·
34 revisions
- SVN 默认不提交.a之类文件,需要手动提交 tolua 链接库
- 如果不想导出某个函数,自己写的代码可以使用 [NoToLua] 标记,库函数可以写到ToLuaExport中的memberfilter数组中,同样导出了编译器代码导致无法打包APK等,也需要把对应函数或者属性加入到memberfilter中
- 加载lua文件出现unexpected symbol near '<\239>'异常,是UTF8 BOM头问题, 需要保存lua文件为UTF-8无BOM格式,注意在windows平台用记事本打开lua文件,会被自动加上BOM头
- 不要覆盖lua全局函数print. 不能覆盖全局函数error
- 使用pcall, xpcall, coroutine.resume等能捕获lua异常的函数,出错时,处理完自身逻辑之后, 必须使用error函数把错误信息扔回上一层。
- 如果在lua中Instantiate或者AddComponent(还有SendMessage)。对应的脚本Awake(或者SendMessage对应的消息处理函数)中,必须自己捕获异常,重新扔给lua。参见Awake函数例子
- math.fmod函数没有了,新的luajit使用%符号来计算余数
- luac5.3 使用#符号代替table.getn
- 在4.7.2 环境下,如果例子回调log显示不全,Visual Studio Tools->Configuration里面关闭Send Console to Visual studio选项
- 早期Unity载入unityvs插件包情况(如unity4x或者5很早版本),某些情况下调试会崩溃,在visual studio菜单选择调试->窗口->断点, 然后再断点窗口清除所有断点。新的unity版本不需要载入Visual Studio Tools插件包,这种偶尔会启动调试卡死,也是清除所有断点. 这些卡死跟tolua插件没什么关系。
- LuaException: not enough memory 问题,1.早期luajit 32位版本运行在unity5+ 64位编辑器会随机出现这个问题,升级插件即可解决, 注意在Build Settings->PC, MAC&Linux Standalone->Architecture选择x86_64。在Project->Plugins->x86_64目录下选择tolua.dll,对应Inspector Select platforms for plugin->Include Platforms 选择Editor和Standalone, Platform Settings CPU选择x86_64 OS选择Windows(PC平台下) 2.某些错误luajit64下也会报not enough memory, 这种是固定位置的, 很好排查。
- 枚举值如何转int, 参考这里
- LuaException: [.../Lua/event.lua]:167:bad argument #2 to f(function expected, got nil)
native动态库不匹配错误,确认tolua.traceback函数存在