孫廣東 2017.8.23
http://blog.csdn.NET/u010019717
推薦一下這個國人弄的基於IntelliJ IDE 弄得外掛程式 EmmyLua 。 他的QQ群: 29850775
github: https://github.com/tangzx/IntelliJ-EmmyLua
oschina: http://git.oschina.net/tangzx/IntelliJ-Lua
IDEA Plugins : https://plugins.jetbrains.com/plugin/9768-emmylua
文檔: https://tangzx.github.io/emmydoc/
啟動並執行時候可能會報錯: Program [lua.exe] not found. 怎麼辦。 外掛程式的不足之處沒有內建lua環境, 需要自己安裝比如 “Lua for window ”。 希望外掛程式以後能內建環境。 按照作者的回複考慮體積搞大“至少兩個平台 32 64,再加上luasocket模組, 還要考慮平台和版本問題 ”內建是不可能了。 傳送門:
方式一、 Lua for Windows 的下載(跟原始碼相比會版本落後一些)
https://github.com/rjpcomputing/luaforwindows/releases
而且內建了 編輯器 SciTE,
同時 工具幫我們配置了環境變數(外掛程式就是通過這個環境變數找到的lua.exe)
方式二、下載 bin 檔案 http://luabinaries.sourceforge.net/download.html ,
解壓到安裝軟體的地方, 然後配置環境變數就行。(注意 lua.exe 是我拷貝的 lua53.exe 然後重新命名的)
首先,安裝外掛程式。 注意對IDEA 的版本有一個要求不能低於 2017.1
理論上如果你安裝過一下任意一個產品, 只要版本夠高, 都可以安裝這個外掛程式
“IntelliJ IDEA, PhpStorm, WebStorm , PyCharm, RubyMine, AppCode, CLion ,Gogland ,DataGrip ,Rider , Android Studio”
以 Rider 2017.1.1 為例(但還是推薦使用IDEA , 否則可能沒辦法建立Lua項目)
File -> Settings 然後
你可以把外掛程式下載到本地, 然後選擇從磁碟安裝, 也可以在IDEA工具內搜尋安裝(我是這種)。
然後在右側 點擊 Install 安裝, 重啟就行了。
註: 可能會出現下載不了的問題, 這個跟使用的網路電訊廠商有關。 只能使用另外一種方式安裝了。。。
重啟後, 建立項目 (或者 開啟項目選擇Lua檔案 所在的檔案夾就行。)
在 src 目錄下, 建立一個 main.lua 檔案, 輸入
print("Test main")
運行, 正常輸出, 不報錯就 OK !
試試Debug 模式運行, 設定斷點 都是正常的。。
要把Unity項目匯入才行:
IDEA中 File -> New -> Module from Existing Sources 選擇Unity 項目的 Assets就行。
怎麼調試項目中lua代碼呢。
File -> Project Structure 中 (這個源本身是可以添加多個的。)
我遇到的問題是設定 Sources Root 的過程, 比如說我就要調試 xlua 項目的 LuaTestScript.lua.txt 指令碼 。
群中管理員的解答: “root 是你代碼裡面 訪問lua檔案的根目錄”,
比如 你的代碼在 src/lua/test/1.lua 裡面 你代碼裡面用的時候是 'test/1.lua' 那你的 lua目錄就是root 。 xlua中這種訪問是指什麼呢。
比如下面的LuaBehaviour.cs 中 luaEnv.DoString的第二個參數 。
Try attachto pid:39556 with x64 debugger.
Found allnecessary Lua functions [M:xlua.dll, V:530]
Debuggerattached to process.
Attachfinish.
[✘]File not found : Init
[✘]File not found : LuaBehaviour
提示有這兩個東西沒找到。
執行個體代碼中是有錯誤的, LuaBehaviour.cs 中將 luaEnv.DoString的第二個參數 改成LuaTestScript.lua.txt可以找到。 還差那個 Init 不知道是啥。
Try attach to pid:39556 with x64 debugger.
Found all necessary Lua functions [M:xlua.dll, V:530]
Debugger attached to process.
Attach finish.
[✘] File not found : Init
[√] File was loaded : LuaTestScript.lua.txt
VS 內 全域搜尋"Init" ,lua是作為cs中的字串 , 就是 LuaEnv.cs 檔案中。 把參數改為“LuaEnv.cs ” 他所在 Xlua\Src 檔案夾下, 要添加這個源。 結果是不行的。
“如果lua代碼不是單獨的檔案, 而是在cs 中的字串 可以斷點調試麼。 ” 答案是後續可能會支援, 現在是不可以地。 不過不影響正常調試,想要調試的lua指令碼被正常載入就行了。 不管了。
xlua 預設的lua檔案名稱字是 .lua.txt 實際上就是.txt 怎麼能讓這個IDEA關聯.txt 到EmmyLua 插件上。
代碼提示忽略大小寫:
他的代碼提示是怎麼做到的。
所謂的註解。 EmmyLua註解功能只是單純的輔助編輯器代碼提示以及其它功能,和Lua代碼的實際運行邏輯沒有任何關係,因為它們就是普通的Lua注釋。