斷點(diǎn)調(diào)試功能可謂是程序員必備的功能了。Unity3D支持編寫(xiě)js和c#腳本,但很多人可能不知道,其實(shí)Unity3D也能對(duì)程序進(jìn)行斷點(diǎn)調(diào)試的。不過(guò)這個(gè)斷點(diǎn)調(diào)試功能只限于使用Unity3D自帶的MonoDevelop編輯器。而用Visual Studio是不行的。聽(tīng)說(shuō)有個(gè)叫做UnityVS的東西可以使用VS對(duì)Unity進(jìn)行斷點(diǎn)Debug,不過(guò)沒(méi)試過(guò)。
好了,簡(jiǎn)單的說(shuō)說(shuō)做法吧:
首先肯定是先要把腳本編輯器指定為MonoDevelop了。
選擇好之后,可以在項(xiàng)目面板右鍵選擇Sync MonoDevelop Project來(lái)打開(kāi)MonoDevelop。
因?yàn)樾枰心_本才能對(duì)腳本進(jìn)行調(diào)試,所以我寫(xiě)了個(gè)很簡(jiǎn)單的腳本,里面有兩個(gè)按鈕,按第一個(gè)“add”按鈕的時(shí)候,程序會(huì)用一個(gè)循環(huán)的方式把從0到9的數(shù)加起來(lái),然后累加給sum。按第二個(gè)按鈕時(shí),會(huì)把sum清零。
寫(xiě)好腳本之后,把腳本隨便拖到場(chǎng)景的物體上面,我們準(zhǔn)備調(diào)試了。在調(diào)試之前,我們需要把MonoDevelop和Unity3D進(jìn)行連接。
具體的連接方法有2種:
第一種,先把當(dāng)前場(chǎng)景保存一下,然后關(guān)掉Unity。回到MonoDevelop,按F5或者點(diǎn)擊Debug按鈕。
這樣,MonoDevelop會(huì)打開(kāi)一個(gè)新的Unity3D界面,這時(shí)候連接完成了。
第二種方法,無(wú)需關(guān)掉Unity,在MonoDevelop的Run菜單下選擇Attach to Process
然后選擇Unity的進(jìn)程,點(diǎn)擊Attach按鈕。
這時(shí)候,MonoDevelop就連接上了Unity了。
當(dāng)連接好了Unity3D之后,右邊的調(diào)試按鈕就變成可用了,我們把視窗顯示選擇Debug。
debug模式腳本下面的位置會(huì)多出兩個(gè)窗口。
回到Unity,點(diǎn)擊運(yùn)行按鈕,會(huì)看到剛才的腳本已經(jīng)運(yùn)行了。里面有兩個(gè)按鈕。
回到MonoDevelop,在腳本里面我們打一個(gè)斷點(diǎn)(在行號(hào)左邊點(diǎn)一下)
然后回到Unity里面,點(diǎn)擊第一個(gè)按鈕“add”。這時(shí)候斷點(diǎn)起作用了,程序會(huì)暫停,MonoDevelop跳到斷點(diǎn)的行。
留意看下面debug的Locals信息,會(huì)看到當(dāng)前狀態(tài)下的變量i和sum的值。
使用調(diào)試按鈕,讓程序單步的運(yùn)行
我們看到了當(dāng)前的變量i和sum的實(shí)際變化情況。
到這里,斷點(diǎn)調(diào)試已經(jīng)完成。
調(diào)試完之后,我建議最好把MonoDevelop和Unity3D的連接斷開(kāi)。假如你不斷開(kāi)的話,Unity會(huì)一直處于很卡的狀態(tài)。
斷開(kāi)的方法也是有幾種了,首先對(duì)應(yīng)Debug按鈕有一個(gè)斷開(kāi)的按鈕,可以直接點(diǎn)擊斷開(kāi)。
或者我們可以把剛才附加的進(jìn)程Detach掉。
再或者,我們可以點(diǎn)擊這個(gè)插頭按鈕,把Debugger 斷開(kāi)。
這兩種方法連接Unity,我建議還是使用第二種附加進(jìn)程的方式吧。畢竟你不可能每次調(diào)試都要關(guān)掉一次Unity然后再?gòu)腗onoDevelop打開(kāi)一次Unity。所以,編寫(xiě)腳本的時(shí)候,把連接Detach掉,等需要調(diào)試的時(shí)候,再把進(jìn)程Attach上去,進(jìn)行調(diào)試就行了。