2017年7月12日 星期三

[教學] 在 Visual Studio Code 中替 Unity 除錯


本文將簡單說明如何在 Visual Studio Code (簡稱 VS code) 中,進行Unity Debug (除錯)。
但注意,只有C# only。這也是為什麼我當初果斷改寫C#的原因之一:在Unity寫JS沒人權阿!


安裝  Unity 官方替 VS Code 製作的 Debug (除錯) 插件。

1、點擊右側 Extensions 的圖示 (或是Ctrl+Shift+X)

2、在搜尋列輸入 Unity Debug ,選擇 Debugger for Unity 並點選 Install 安裝 

3、安裝完後點擊 Reload 按鈕重啟後,就可以開始使用Debug囉


檢查程式是否有進入特定程式碼區段,並查尋變數狀態。
程式碼內總是充滿複雜交錯的 【判斷式】 與 【變數】 ,
接下來簡單介紹如何用VS cdoe 查詢程式碼【現在】執行到那一行、【現在】特定變數的狀態

以下代碼作為說明:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class main : MonoBehaviour
{
    void Start()
    {
        var ans = testBug();
    }

    int testBug()
    {
        var r = Random.Range(1, 10);

        if (r <= 5)
        {
            return 1;
        }

        if (r <= 10)
        {
            return 2;
        };

        return 0;
    }
}
上面的程式碼非常簡單: 在Start()方法中,執行了testBug()這個方法。
testBug這個方法中,會產成一個0~10的隨機變數 r (第10行),
並依據 r 變數的大小回傳 0、1、2 三種整數。(第12~22行)


如何至到程式執行到那 ?如何檢視此時變數狀態?
1、在VS Cdoe 中,點擊行數的最前端可以新增【中斷點】

2、設定好中斷點後,點擊VS code的除錯模式按鈕,並點擊畫面上綠色箭頭按鈕。

3、初次執行時會詢問要用那個除錯器,選  Unity Debugger。
4、選擇  Unity Debugger 後會跳出 launch.json 檔案...直接關掉吧。


5、再次重複步驟 2 ,點擊綠色按鈕(或是按F5)


6、如果順利進入除錯監控狀態,VS code底部狀態列顏色會變,並且出現控制列

7、這時候我們 Unity 執行的Play 鍵,會出現下面的畫面:

8、從上影片中可看到第18行出現了黃色的底色標註。
9、這是因為我們在18行設定了【中斷點】,並且程式執行到了這一行

10、程式因中斷點而暫停時,可以在此時透過滑鼠檢視特定變數,例如 r 變數...

11、如果我們要讓程式繼續執行並持續監控,可以點擊控制列的綠色撥放按鈕
12、如果我們要讓程式繼續執行並停止監控,可以點擊控制列的紅色停止按鈕



上述範例檔案下載

2 則留言:

  1. 請問關於launch.json的設定 在每一次執行專案的時候都會把設定洗回最一開始的unity
    這時該如何讓它保持在設定為unity debugger的狀態呢?
    有人提供方法是改成“唯讀”
    但這個方法在mac中似乎不適用
    請問該怎麼做才好?@@

    回覆刪除
    回覆
    1. 我都很阿Q的不理他耶... 我想想看有什麼解法

      刪除