目前项目中使用到lua来做Unity项目(我想现在应该项目基本都用lua了),当时可以选择的调试可视化编辑器有两个
- LuaStudio
- ZeroBraneStudio
首先先不谈是否付费(LuaStudio好像是要付费的),我选择后者原因主要有两个
- 因为有Mac版(搞iOS版本需要,并且本人主要是Mac下开发)
- 因为开源
下面链接是ZeroBraneStudio原来的github地址:https://github.com/pkulchenko/ZeroBraneStudio
本人抽取了其中一个版本作为修改
本来是打算直接Fork的,但是个人意图还是在原有的框架下扩展,尽可能的不去动源码(除了mobdebug.lua这个文件),所以就自己download了一个版本做扩展,
还有本来打算只上传扩展部分,想想还不如全部丢上来了还省事
如果用原生的ZeroBraneStudio来直接用,会很蛋疼,撇开终止调试后unity直接帮你退掉的问题之外,还有断点如果遇到协程就继续走不下去(这个官方有解决方案,而且这个不是编辑器的问题,如果我没理解错的话,理论上lua调试接口本身就有这个局限性) 还有堆栈信息会丢失报错等等问题,其余的体验也有点蛋疼,导致你会有种还不如直接sublimetext的感觉。
不过个人当时看了下它的代码流程,其实是相当清晰的,个人感觉就是一个舒服形容,这也是让我有种冲动去改造它的原因。(其实随便改造并不好,还是扩展为主,扩展自己需要的东西)
其实项目中我已经改的七七八八了,基本能顺利调试,但是有些细节体验需要优化而已,然而那时候改的太high 忘了内网这东西(哭),所以只能有空在我Mac上再重新搞一个了 (不过以前弄得都基本通过改源码的,而且还比较乱,也是个机会吧)
还有这个demo里面面向对象用到的是middleclass 项目链接 所以很多东西可能细节上不一样 不过我这个主要是分享思路而已
lua的话就是用tolua 这个应该都知道是啥的了
- 首先新增自定义语法生成 packages/CustomApiCreater.lua 作用是生成自定义语法 目的是为了跨文件代码提示
- 修改逻辑(mobdebug.lua),退出调试不把unity编辑器关掉(默认是会自动关掉)
- 还有就是保存时候会自动检测语法(默认需要手动调用)
- 新增api文件差异比较,如果改方法已被写入,那么不会重新写,如果是新的方法,就往后写入。项目内容多了之后写入内容太多导致写入时间过长,因此加了差异比较。
- 新增定时清理,因为差异比较是只增不删,所以导致一些无用的提示会出现。这里新增了一个定时,时间到了会清理一次并全部重新写入。
- 将所有配置模块整合到user.lua中,包括自定义新增的配置,如定时清理间隔时间。
- 后面慢慢填坑,还有它这编辑器断点出现报错那些后面好了再提交吧,总之这个编辑器对unity(Tolua)兼容并不是很友好,虽然它本来就没有这个平台支持就是了。
- 旧项目稍微用了下Xlua,不过不像tolua需要做那么多工作,配置下就可以满足了。跳转链接