Godot 遊戲引擎指南/除錯
偵錯程式塢是預設的也是最好的除錯方式。如果它旁邊顯示一個紅色圓圈,則表示有錯誤需要閱讀。如果有黃色圓圈,則表示有新的警告需要閱讀。
當你開啟它時,你會看到幾個選項卡
當指令碼錯誤發生時,這個選項卡會開啟。對於致命錯誤,它不會顯示,遊戲只會崩潰。在這種情況下,請參見 下方。
它顯示了“堆疊幀”。這是一個堆疊 函式呼叫,讓你能夠找到錯誤的來源。這非常寶貴。在堆疊幀的右側,顯示了指令碼可以訪問的所有變數以及它們的值。在它的上方是幾個按鈕
- 跳過斷點:在按下此按鈕之前,遊戲會暫停在斷點處。.
- 複製錯誤:將錯誤複製到你的剪貼簿。
- 單步進入:執行下一個表示式。進入它本來會進入的縮排塊。
- 單步執行:執行下一個表示式。跳過縮排塊。
- 中斷:暫停遊戲,就像使用斷點一樣。
- 繼續:恢復遊戲。
允許你檢視在運行遊戲期間遇到的所有致命和非致命錯誤以及警告。有幾個按鈕
- 清除:清空此列表。
- 展開全部:展開每個錯誤以檢視更多資訊。
- 摺疊全部:摺疊每個錯誤以檢視更少的資訊。
可以按每個錯誤跳轉到產生該錯誤的指令碼和行。雙擊它可以展開或摺疊。你也可以點選箭頭來展開/摺疊。展開它會顯示錯誤和程式碼堆疊。
這允許你記錄函式呼叫次數以及使用了多少幀時間。在最佳化遊戲時它非常寶貴,並且也可以用於除錯。
首先,你必須按下開始。在右側,會生成一個圖表。較高的線條意味著某些東西佔用了大量的遊戲處理時間。它們應該在某些時候儘可能地進行最佳化。
要檢查是什麼導致了遊戲執行緩慢,請點選圖表中峰值較高的地方,然後向下滾動左側。你會看到每個函式呼叫花費了多少秒以及它被呼叫了多少次。如果你想要百分比,請點選Mesure:值,然後選擇Frame %。
Time:有兩個值
- 包含:顯示幀時間或對某個函式的所有呼叫的百分比
- 自身:顯示單個呼叫期間最大的幀時間或百分比。
這允許你檢視每個節點使用了多少網際網路流量。包括髮送和接收的流量。
這允許你透過圖表檢查效能。最有用的顯示選項是
- 時間
- FPS:每秒幀數。
- 程序:每個空閒幀花費的時間。
- 物理程序:物理幀花費的時間。
- 記憶體
- 靜態:用於不變事物的記憶體量。
- 動態:正在使用的記憶體量始終在變化,或者程式碼正在執行。
- 靜態最大值:已達到的最大靜態記憶體。
- 動態最大值:已達到的最大動態記憶體。
- 訊息緩衝區最大值:輸出使用的記憶體,包括錯誤和警告。
- 物件
這允許你檢視有多少影像佔用了記憶體以及哪些影像佔用了記憶體。
這允許你檢視遊戲關閉之前最後啟用的控制節點及其節點路徑。
開啟指令碼編輯器後,按下頂部的“除錯”按鈕。它靠近“檔案”和“搜尋”。
你有一些上面已經解釋過的選項:單步進入、單步執行、中斷和繼續。
你還有兩個其他選項
- 保持偵錯程式開啟:運行遊戲會減慢編輯器的速度,因此必須關閉它。但關閉遊戲也會關閉偵錯程式。選中此選項以在關閉遊戲時保持偵錯程式開啟。
- 使用外部編輯器除錯:允許你使用另一個編輯器進行除錯。
在螢幕的最頂部,按下“除錯”按鈕。它出現在“場景”和“專案”附近。你有以下選項
- 使用遠端除錯部署:匯出時,生成的執行檔案將嘗試連線到要除錯的計算機。
- 使用網路檔案系統進行小型部署:匯出會生成一個最小的執行檔案。檔案系統透過網際網路提供。
- 可見碰撞形狀:是否顯示碰撞形狀。
- 可見導航:在執行的遊戲中是否可見導航網格和多邊形。
- 同步場景更改:如果選中,對場景的更改將複製到執行的遊戲中。
- 同步指令碼更改:如果選中,對指令碼的更改將導致它在執行的遊戲中重新載入。
除錯編輯器外掛的最佳方法是關注輸出面板。 如果這沒有幫助,新增臨時的print() 呼叫可以幫助您檢視呼叫了什麼以及變數的值。
致命錯誤是不會丟擲錯誤訊息的崩潰。 它通常是由引擎錯誤引起的,有時與您的程式碼無關。 您也可以嘗試另一種方式來完成程式碼崩潰時正在執行的操作,或者在此處報告錯誤。 您可能需要傳送發生崩潰時正在執行的程式碼的副本。
確切地記下發生崩潰時您在做什麼。 嘗試找出正在執行的程式碼,並在該區域周圍新增斷點。 如果這次沒有崩潰,請再次刪除斷點。 如果在播放時它仍然沒有崩潰,請確保您正在執行您寫下的操作。
如果您仍然無法重現崩潰,請假設這不是您可以修復的問題,而是一個編輯器錯誤。 考慮傳送錯誤報告。 這可能需要提供您認為問題所在的程式碼示例,並且您可能需要提供您正在執行的操作的準確說明。 也要考慮上傳任何有用的日誌檔案。
