跳轉到內容

Godot 遊戲引擎指南/除錯

來自華夏公益教科書

偵錯程式塢

[編輯 | 編輯原始碼]

偵錯程式塢是預設的也是最好的除錯方式。如果它旁邊顯示一個紅色圓圈,則表示有錯誤需要閱讀。如果有黃色圓圈,則表示有新的警告需要閱讀。

當你開啟它時,你會看到幾個選項卡

偵錯程式

[編輯 | 編輯原始碼]

當指令碼錯誤發生時,這個選項卡會開啟。對於致命錯誤,它不會顯示,遊戲只會崩潰。在這種情況下,請參見 下方

它顯示了“堆疊幀”。這是一個堆疊 函式呼叫,讓你能夠找到錯誤的來源。這非常寶貴。在堆疊幀的右側,顯示了指令碼可以訪問的所有變數以及它們的值。在它的上方是幾個按鈕

  • 跳過斷點:在按下此按鈕之前,遊戲會暫停在斷點處。.
  • 複製錯誤:將錯誤複製到你的剪貼簿。
  • 單步進入:執行下一個表示式。進入它本來會進入的縮排塊。
  • 單步執行:執行下一個表示式。跳過縮排塊。
  • 中斷:暫停遊戲,就像使用斷點一樣。
  • 繼續:恢復遊戲。

允許你檢視在運行遊戲期間遇到的所有致命和非致命錯誤以及警告。有幾個按鈕

  • 清除:清空此列表。
  • 展開全部:展開每個錯誤以檢視更多資訊。
  • 摺疊全部:摺疊每個錯誤以檢視更少的資訊。

可以按每個錯誤跳轉到產生該錯誤的指令碼和行。雙擊它可以展開或摺疊。你也可以點選箭頭來展開/摺疊。展開它會顯示錯誤和程式碼堆疊。

分析器

[編輯 | 編輯原始碼]

這允許你記錄函式呼叫次數以及使用了多少幀時間。在最佳化遊戲時它非常寶貴,並且也可以用於除錯。

首先,你必須按下開始。在右側,會生成一個圖表。較高的線條意味著某些東西佔用了大量的遊戲處理時間。它們應該在某些時候儘可能地進行最佳化。

要檢查是什麼導致了遊戲執行緩慢,請點選圖表中峰值較高的地方,然後向下滾動左側。你會看到每個函式呼叫花費了多少秒以及它被呼叫了多少次。如果你想要百分比,請點選Mesure:值,然後選擇Frame %

Time:有兩個值

  • 包含:顯示幀時間或對某個函式的所有呼叫的百分比
  • 自身:顯示單個呼叫期間最大的幀時間或百分比。

網路分析器

[編輯 | 編輯原始碼]

這允許你檢視每個節點使用了多少網際網路流量。包括髮送和接收的流量。

監視器

[編輯 | 編輯原始碼]

這允許你透過圖表檢查效能。最有用的顯示選項是

  • 時間
    • FPS:每秒幀數。
    • 程序:每個空閒幀花費的時間。
    • 物理程序:物理幀花費的時間。
  • 記憶體
    • 靜態:用於不變事物的記憶體量。
    • 動態:正在使用的記憶體量始終在變化,或者程式碼正在執行。
    • 靜態最大值:已達到的最大靜態記憶體。
    • 動態最大值:已達到的最大動態記憶體。
    • 訊息緩衝區最大值:輸出使用的記憶體,包括錯誤和警告。
  • 物件
    • 物件:存在的物件總數。
    • 資源:存在的資源數量。
    • 節點:存在的節點數量。
    • 孤兒節點:不在場景樹中的節點數量。一般來說,這應該始終為零。如果故意這樣,請嘗試使用資源或物件。否則,如果可能的話,你應該釋放它,在完成它後在該節點上呼叫free()

影片記憶體

[編輯 | 編輯原始碼]

這允許你檢視有多少影像佔用了記憶體以及哪些影像佔用了記憶體。

這允許你檢視遊戲關閉之前最後啟用的控制節點及其節點路徑。

指令碼除錯

[編輯 | 編輯原始碼]

開啟指令碼編輯器後,按下頂部的“除錯”按鈕。它靠近“檔案”和“搜尋”。

你有一些上面已經解釋過的選項:單步進入、單步執行、中斷和繼續。

你還有兩個其他選項

  • 保持偵錯程式開啟:運行遊戲會減慢編輯器的速度,因此必須關閉它。但關閉遊戲也會關閉偵錯程式。選中此選項以在關閉遊戲時保持偵錯程式開啟。
  • 使用外部編輯器除錯:允許你使用另一個編輯器進行除錯。

除錯選項

[編輯 | 編輯原始碼]

在螢幕的最頂部,按下“除錯”按鈕。它出現在“場景”和“專案”附近。你有以下選項

  • 使用遠端除錯部署:匯出時,生成的執行檔案將嘗試連線到要除錯的計算機。
  • 使用網路檔案系統進行小型部署:匯出會生成一個最小的執行檔案。檔案系統透過網際網路提供。
  • 可見碰撞形狀:是否顯示碰撞形狀。
  • 可見導航:在執行的遊戲中是否可見導航網格和多邊形。
  • 同步場景更改:如果選中,對場景的更改將複製到執行的遊戲中。
  • 同步指令碼更改:如果選中,對指令碼的更改將導致它在執行的遊戲中重新載入。

除錯編輯器外掛

[編輯 | 編輯原始碼]

除錯編輯器外掛的最佳方法是關注輸出面板。 如果這沒有幫助,新增臨時的print() 呼叫可以幫助您檢視呼叫了什麼以及變數的值。

捕獲致命錯誤

[編輯 | 編輯原始碼]

致命錯誤是不會丟擲錯誤訊息的崩潰。 它通常是由引擎錯誤引起的,有時與您的程式碼無關。 您也可以嘗試另一種方式來完成程式碼崩潰時正在執行的操作,或者在此處報告錯誤。 您可能需要傳送發生崩潰時正在執行的程式碼的副本。

確切地記下發生崩潰時您在做什麼。 嘗試找出正在執行的程式碼,並在該區域周圍新增斷點。 如果這次沒有崩潰,請再次刪除斷點。 如果在播放時它仍然沒有崩潰,請確保您正在執行您寫下的操作。

如果您仍然無法重現崩潰,請假設這不是您可以修復的問題,而是一個編輯器錯誤。 考慮傳送錯誤報告。 這可能需要提供您認為問題所在的程式碼示例,並且您可能需要提供您正在執行的操作的準確說明。 也要考慮上傳任何有用的日誌檔案。


Godot 遊戲引擎指南

入門 [編輯]
安裝
什麼是節點?
程式設計
資源和匯入
訊號和方法
你的第一個遊戲
讓它工作
除錯
輸入
物理
儲存和載入
多人遊戲
讓它看起來好
UI 皮膚
動畫
高階幫助
伺服器(單例)
平臺特定
最佳化
加密
匯出
外掛
其他
有用的連結
作者和貢獻者
印刷版


<-- 上一個 回到頂部 下一個 -->

華夏公益教科書