[转] unity调试lua工具和方法

原贴:https://blog.csdn.net/zjz520yy/article/details/79919267java

 

前言:能够编写lua的工具备不少,好比subline,zerobrance studio, luastudio,decode,babelua,EmmyLua等,可是真的很方便调试lua的工具却不多。之前用的比较多的工具是luastudio,这是款收费软件,还很差破解,网上的各类破解版几乎运行几分钟就会自动闪退,因此有钱的朋友能够买一个用下。如今发现一款基于IntelliJ IDEA的EmmyLua插件。该插件功能很是完整,包括断点调试、自动提示、代码跳转、智能重命名等,能够极大地提升Lua编程的速度。界面也比较舒服。最主要的是免费的,吸引力比较强。因此写下本编文章记录下,也但愿能够给看到本篇博客的朋友一点帮助。c++

安装IntelliJ IDEA: 
1.下载地址为:https://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases,这里选择的是2017.3.5 Ultimate版本。 
2.启动安装程序,流程图以下所示: 
这里写图片描述 
这里写图片描述 
这里写图片描述 
这里写图片描述 
这里写图片描述git

破解IntelliJ IDEA:这里选择的是破解补丁激活方法,过程以下: 
1.破解补丁下载地址为:https://pan.baidu.com/s/1KUFUflJleyHnHZAllnzXUQ 密码:3493。并将下载的破解补丁放在你的安装IDEA下面的bin的目录下面。 
2.IDEA的bin目录下面有2个文件 : idea.exe.vmoptions和idea64.exe.vmoptions。用记事本打开,在上述两个文件的最后一行均加上-javaagent:IDEA安装目录\bin\破解补丁文件名.jar 
3.获取激活码地址为http://idea.lanyus.com/,获取过程如图所示: 
这里写图片描述
4.启动IDEA,第一次进入会提示激活,选择Activation Code,并输入如上3步骤中获取的激活码,流程如图所示 
这里写图片描述 
这里写图片描述 
5.软件启动,进入Help,选择About,页面显示December 31,2099到期,完成激活。以下图: 
这里写图片描述github

汉化IntelliJ IDEA:这里选择的是补丁汉化方法,过程以下: 
1.在主界面选择File → Settings → Appearance&Behavior → Appearance → 勾选Override default fonts by(not recommended)。其中Name选择任意一个中文字体,不然中文显示乱码,这里选择的是Microsoft YaHei。如图所示: 
这里写图片描述
2.汉化补丁下载地址为:https://pan.baidu.com/s/1QUpLOgMrVtC0PSfwGjOd0g 密码:5d7t。并将下载的汉化补丁放在你的安装IDEA下面的lib目录下,重启IDEA便可完成汉化。 
3.有时候汉化版的界面不能显示,此时若是想取消汉化版,只需将IDEA下面的lib目录中的汉化插件移除便可。若是想要有汉化版,只需将汉化插件放在你的安装IDEA下面的lib目录下便可。编程

安装lua for windows插件:lua for windows是lua环境开发的运行时文件,安装步骤以下: 
1.下载VC++2005运行时库,下载地址为:https://pan.baidu.com/s/1QAPmJ1zhHDphqakcSWaiew 密码:j7s9。只须要安装里面的vc++2005运行时库就好了。 
2.下载lua for windows插件,下载地址为:http://luaforge.net/projects/luaforwindows,我这里使用的是LuaForWindows_v5.1.4-35。通常安装完后自动设置环境变量的,没有设置就手动设置一下。好比个人安装目录是lua5.1,在环境变量的Path中加入D:\Progma\lua5.1;D:\Progma\lua5.1\clibs; 
3.使用cmd验证是否安装成功,流程以下图所示: 
这里写图片描述 
这里写图片描述 
安装EmmyLua插件:建议直接在IDEA工具内搜索插件安装(固然也能够下载插件到硬盘安装,插件地址为:https://plugins.jetbrains.com/plugin/9768-emmylua),这里选择的EmmyLua版本是1.2.2,安装完须要重启IDEA。流程如图所示: 
这里写图片描述windows

配置EmmyLua事项:在使用EmmyLua调试lua前,须要作一些工程配置,常见配置以下: 
1.关联指定文件:好比将*.txt识别成lua文件,如图所示 
这里写图片描述
2.忽略指定文件:如图所示 
这里写图片描述 
3.代码提示忽略大小写:如图所示 
这里写图片描述api

建立Lua项目:建立流程以下: 
1.New-Project,而后next,填项目名、路径,点击finish。 
2.在项目视图的src文件夹New一个Lua文件。如:Test.lua。 
3.配置SDK:配置方式如图所示 
这里写图片描述 
4.将模块已有源码目录设为Sources目录:菜单进入File -> Project Structure, 选择 Modules -> Sources -> Add Content Root -> 选择源码根目录-> Mark as: Sources。如图所示: 
这里写图片描述
5.在Test.lua文件中加入一句print(“it works”)语句,而后点击Run就能够运行了。运行结果如图所示: 
这里写图片描述 
若是运行不成功,就须要检查SDK配置是否正确。安全

本地调试Lua项目:调试流程以下: 
1.调试普通Lua项目时只需在对应地方打断点就行,而后点击Run->Debug Test.lua或者工具栏中的Debug图标就能够启动调试了。调试结果如图所示: 
这里写图片描述
2.调试unity引擎Lua项目时只需在对应地方打断点就行,而后点击Run -> Attach to Local Process, 选择 Unity.exe,就能够启动调试了。调试流程如图所示: 
这里写图片描述 
这里写图片描述babel

远程调试Lua项目:调试流程以下: 
1.配置Remote调试设置,如图所示: 
这里写图片描述 
2.点击 + 选择并建立 Lua Remote(Mobdebug) 配置,如图所示: 
这里写图片描述 
3.设置好相关参数后点击OK,如图所示: 
这里写图片描述 
4.点击右上角debug按钮并注意IDEA控制台LOG输出,如图所示: 
这里写图片描述 
这里写图片描述 
5.远程调试通讯依赖于luasocket模块,因此被调试的程序须要支持luasocket。这里以tolua插件开启luasocket进行介绍,slua以及ulua等插件开启luasocket方式请参照对应官网介绍。tolua插件中开启luasocket的方式以下: 
一.将LuaClient中的openLuaSocket设置为true,如图所示: 
这里写图片描述 
二.LuaClient中自动将luasocket添加到lua虚拟机堆栈中,如图所示: 
这里写图片描述 
这里写图片描述 
6.远程调试内核基于mobdebug.lua,因此被调试的程序须要支持mobdebug.lua。下载地址为:https://pan.baidu.com/s/1xbLSgM_MGjBzScsDOoVoLg 密码:laqn。此时将该文件放在入口文件同级目录下,要否则会报找不到mobdebug的错误。 
7.在入口文件中加入require("mobdebug").start("localhost", 8172) --默认值为 "localhost", 8172 也能够设置本身想要的ip和port 
8.unity启动场景中加入tolua插件的LuaClient.cs文件,运行unity目标程序时会自动打开刚才配置好的luasocket库而且执行入口文件中的入口方法,此时idea控制台出现Connect提示,代表远程链接成功,此时就能够断点调试了。如图所示: 
这里写图片描述 
这里写图片描述socket

调试失败相关问题排查: 
1.远程调试运行目标出现“module ‘mobdebug’ not found:no field package.preload[‘mobdebug’]”日志时,此时要检查mobdebug.lua文件是否放入到模块源代码根目录Source中主入口文件(如Main.lua文件)相同层级下。 
2.远程调试运行目标出现Connected 日志有,但断点无效时,此时要检查目标程序在运行时提供的文件名与源码文件的文件名一致(致少除了后缀名的前面的部分一致)以及是否将模块源码目录设为Sources目录。 
3.本地调试出现断点无效,IDEA控制台窗口出现 xxx not found 日志时,此时要检查是否将模块源码目录设为Sources目录。 
4.本地调试出现附加到目标程序失败,Error: LuaInject.dll could not be loaded into the process日志时,此时要检查是否被杀软、安全卫士拦截了注入过程。 
5.本地调试出现lua.exe not found日志时,此时要检查SDK配置是否正确。

EmmyLua注解提示功能:emmylua中提供的注解功能可让代码提示更加清晰。因为注解其实是lua里面的注释,因此注解功能不会影响lua任何运行效率。具体注解使用参照地址:https://pan.baidu.com/s/1YdUJH8JNWB1zA9ZjD8L-Vg 密码:q5s1

tolua导出unity类提示功能:因为emmylua中包含了lua api的库,因此对lua api以及本身编写的lua类均可以进行代码提示,加上注解功能后,它们的代码提示就十分清晰。可是unity相关导出类的代码详细提示功能却没有,此时就须要咱们作兼容支持。流程以下: 
1.编写tolua中unity导出类的注解类ToLuaEmmyAPIGenerator.cs文件。文件地址为:https://pan.baidu.com/s/1-mdnPcwxmu02fm7H7iUPWw 密码:6po5。将下载好的ToLuaEmmyAPIGeneratorwen.cs文件放在unity的editor目录下。 
2.打开unity,执行Lua->Gen API for EmmyLua,此时会生成unity导出类的注解类文件,并且默认生成目录为ProjectName/LuaAPI。将该目录打成zip包,这里命名为UnityLuaAPI.zip,这里提供生成好的UnityLuaAPI.zip文件,文件地址为:https://pan.baidu.com/s/18WUmiKbm8foiTPuMsD4fMA 密码:x7gf。 
2.在IDEA的Module中导入下载好的UnityLuaAPI.zip库文件。导入流程如图所示: 
这里写图片描述
这里写图片描述 
3.编写测试文件,查看unity相关api是否能够智能代码提示。如图所示: 
这里写图片描述 
4.这里导出的unity api只是另外生成的一份lua版本并加入到idea的依赖库里面。主要是方便使用注解来给出unity api的提示。因此最终调用时仍是使用tolua导出到lua虚拟机上面的相关接口实现。

unity控制台日志跳转功能:emmylua自身支持lua文件之间的相互跳转,可是在unity的控制台里面的lua日志就不能跳转。因此若是想在unity的控制台里跳转打印的日志,必须额外作兼容处理。相关流程以下: 
1.编写unity控制台中日志跳转类ConsoleToLuaIDE.cs文件。地址为:https://pan.baidu.com/s/1d-HyQj6Eeebys0FbScj3jw密码:qomw。将下载好的ConsoleToLuaIDE.cs文件放在unity的editor目录下。 
2.设置好idea的启动路径和模块源代码根路径,如图所示: 
这里写图片描述 
3.点击unity控制台日志,查看是否进行跳转。如图所示: 
这里写图片描述
这里写图片描述

IDEA中经常使用的快捷键:熟悉经常使用的快捷键对咱们编写代码能够起到事半功倍的做用。这里列举经常使用的快捷键以下: 
1.ctrl + f12:显示代码大纲。 
2.ctrl + n:导航到类定义。 
3.ctrl + shift + n:快速打开文件。 
4.ctrl + shift + alt + n:导航到任意符号(全局变量,类以及类中的方法等)。

注意: 
1.更对emmylua学习资料能够加入官方qq号29850775,里面有不少emmylua相关学习资料。也能够在emmylua的在线文档https://emmylua.github.io/或者视频:https://pan.baidu.com/s/12knNlnqDraw3r8zSXQMMfQ 密码:qxup,来学习更多具体用法。

相关文章
相关标签/搜索