原貼: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,來學習更多具體用法。