共用方式為


在 Visual Studio 中對 Unreal Engine 藍圖進行偵錯

Visual Studio 藉由在呼叫堆棧和局部變數視窗中顯示 Unreal Engine 藍圖的相關信息,以改善 Unreal Engine 專案的偵錯。 此功能可讓您在一個偵錯會話中,將藍圖程式代碼與C++程序代碼一起偵錯。 透過這項功能,您可以輕鬆地追蹤藍圖與C++程式代碼之間的互動,讓您更輕鬆地識別和修正 Bug。

藍圖是 Unreal Engine 中提供的可視化腳本技術,可用於快速原型設計和開發。 它們可以與C++程式代碼互動,而且在許多情況下,遊戲原本是設計為藍圖,稍後轉換成C++以改善效能。 如果您花時間將藍圖轉換成C++,這項功能可讓您將藍圖與C++程序代碼一起分析,以協助轉換。 這可減少在 Visual Studio 與 Unreal 編輯器之間切換的需求,提供順暢的偵錯體驗,並減少內容切換。

Visual Studio 藍圖調試程序支援提供:

  • 整合式呼叫堆疊:藍圖框架會出現在與C++框架相同的呼叫堆疊中。
  • 變數檢查:檢視 Blueprint 節點的釘選及其值顯示在局部變數視窗中。
  • 整合偵錯體驗:在相同會話中偵錯藍圖和C++程序代碼。
  • 斷點支援:在藍圖所呼叫C++程式代碼中設定斷點。 當您有多個藍圖可以呼叫C++程式碼時,這非常有用,但您不確定哪些藍圖確實呼叫了程式碼及其原因。

先決條件

  • Visual Studio 2022 17.14 或更新版本,並已安裝 遊戲開發的 C++ 工作負載
  • 適用於 Unreal Engine 藍圖元件的 Visual Studio 調試程式工具
  • Visual Studio Tools for Unreal Engine 元件。
  • 適用於 Visual Studio 的 Unreal Engine 外掛程式。
  • 安裝了包含偵錯符號的 Unreal Engine。
  • 適用於 Unreal Engine 的 Visual Studio 外掛程式。

安裝先決條件

執行 Visual Studio 安裝程式以安裝必要的元件來偵錯 Unreal Engine 藍圖。 如需安裝 Visual Studio Tools for Unreal Engine 的詳細資訊,請參閱 開始使用 Visual Studio Tools for Unreal Engine

  • 工作負載 窗格中,確定已安裝 C++ 遊戲開發工作負載,以及 適用於 Unreal Engine Blueprints 的 Visual Studio 調試工具適用於 Unreal Engine 的 Visual Studio 工具

    Visual Studio 安裝程式的螢幕快照。已選取 [使用 C++ 工作負載進行遊戲開發]。在 [安裝詳細數據] 窗格中,已選取 Visual Studio Tools for Unreal Engine、適用於 Unreal Engine 藍圖的 Visual Studio 調試程式工具、HSL 工具及 Windows 11 SDK。

安裝 Unreal Engine 偵錯符號

針對您使用 Visual Studio 偵錯的每個 Unreal Engine 版本安裝偵錯符號:

  1. 開啟 Epic Games 啟動器

  2. 選取 [Unreal Engine] 窗格,然後選取 [ 連結庫 ] 窗格。

  3. 選取引擎版本的下拉功能表,然後選擇 [ 選項]:

    Epic Games 安裝程序的螢幕快照。已選取 [啟動] 下拉式清單,並醒目提示 [選項]。

  4. 在 [選項] 對話框中,選取 [編輯器] 符號以進行偵錯

    Epic Games 安裝選項的螢幕快照。已選取用於偵錯的編輯器符號。

  5. 選取 [套用],然後等候下載完成。

安裝適用於 Visual Studio 的 Unreal Engine 外掛程式

適用於 Visual Studio 的 Unreal Engine 外掛程式會安裝到 Unreal Engine 中。 當您在 Visual Studio 中開啟 Unreal Engine 專案時,系統會自動啟動它。 此外掛程式提供 Unreal Engine 與 Visual Studio 之間的必要整合,以便在 Visual Studio 調試程式本地變數視窗中查看藍圖節點管腳值。

如需手動安裝指示,請參閱 vc-ue-extensions

如果您有可在 Visual Studio 中開啟的 Unreal Engine 專案,另一種安裝外掛程式的方式是透過 Unreal Engine 組態視窗在 Visual Studio 中:

  • 在 Visual Studio 中開啟 Unreal Engine 專案後,選擇> [項目設定工具 for Unreal Engine] 以開啟 [Unreal Engine 整合組態] 視窗。
  • [Visual Studio 整合工具狀態 ] 區段中,依需求選取 [ 安裝至專案 ] 或 [ 安裝至引擎 ]。

如果您沒有看到安裝按鈕,請選擇重新整理圖示以重新整理狀態。 如果您需要手動安裝外掛程式,請選取 [ 手動安裝指示 ] 連結,以開啟包含安裝指示 的vc-ue-extensions 頁面。

Unreal Engine 集成配置視窗的螢幕快照。在 [Visual Studio 集成工具狀態] 區段中,突出顯示 [重新整理]、[安裝至專案] 和 [安裝至引擎] 按鈕,及 [手動安裝指示] 連結也被突出顯示。

設定測試專案

若要測試藍圖調試程式功能,請建立包含藍圖和C++程式代碼的專案。 Unreal Engine First Person 範本運作良好。

  1. 開啟 Unreal Engine 編輯器並建立新的 First Person 專案。

  2. 確定已選取 C++

    Unreal Engine 編輯器新項目對話框的螢幕快照。已選取第一人稱,並選取 BlueEpic Games 安裝選項。已選取用於除錯的編輯器符號。

  3. 建立項目之後,請關閉所有 Unreal 編輯器實例。

  4. 在Visual Studio中,開啟產生的Visual Studio方案檔 (.sln)。

安裝適用於 Unreal Engine 的 Visual Studio 外掛程式

若要在 Visual Studio 調試程式中檢視 Unreal Engine 的藍圖節點變數,您需要安裝 Visual Studio 外掛程式。 外掛程式可以安裝在引擎或遊戲專案來源中。 在 Visual Studio 中開啟 Unreal Engine 專案時,系統會自動啟動它。 如需安裝指示,請參閱 vc-ue-extensions

偵錯藍圖

請遵循下列步驟來設定斷點、檢查藍圖函式,以及檢視其節點釘選值:

  1. 在Visual Studio中,找出 AttachWeapon 武器元件類別中的方法。 例如,如果您將專案 FirstPerson命名為 ,函式會位於 檔案 FirstPersonWeaponComponent.cpp中。

  2. 在方法的 AttachWeapon 開頭新增斷點。 當玩家在遊戲中拿起武器時,會呼叫此方法:

    Visual Studio 中 AttachWeapon 函式的螢幕快照。斷點位於函式的第一行。

  3. 在 [Visual Studio 方案組態 ] 下拉式清單中,選取 [開發編輯器]:

    Visual Studio 解決方案設定下拉式清單的螢幕快照。已選取 [開發編輯器]。

  4. 在Visual Studio中,編譯並執行專案以開啟Unreal編輯器。

  5. 在 Unreal 編輯器中,選取綠色的 [播放] 按鈕以啟動遊戲。

  6. 在執行中的遊戲中,按 W 鍵向前移動,直到您與武器相撞並觸發斷點為止。

  7. 當斷點被觸發時,請檢查 呼叫堆疊 視窗。 藍圖堆疊框架會出現在您的C++堆疊框架中:

    Visual Studio 中呼叫堆疊視窗的螢幕快照。AttachWeapon 中的斷點位於呼叫堆疊頂端。在 BP_PickUp_Rifle::ExecuteUbergraph_BP_PickUp_Rifle 和 BP_PickUp_Rifle::BndEvt___BP_PickUp_Rifle_TP_PickUp_K2Node_ComponentBoundEvent_1_OnPickUp_DelegateSignature 的呼叫堆疊中,兩個藍圖項目被反白顯示。

  8. 在呼叫堆疊中雙擊第一個 Blueprint 框。

  9. 開啟 [ 局部變數 ] 視窗,以檢視與藍圖節點相關聯的變數。 您可以看到藍圖節點接腳的值:

    Visual Studio 中 [局部變數] 視窗的螢幕快照。藍圖資訊 > 節點連接點 > 可用的針腳展開後會顯示藍圖的值,例如 EntryPoint、PickUpCharacter、HasRifle 等。

總結

Visual Studio 藍圖調試程式提供順暢的偵錯體驗,可橋接 Unreal Engine 專案中C++與藍圖程式代碼之間的差距。 這個整合式方法可讓您:

  • 追蹤從C++到藍圖和返回的執行流程。
  • 檢查藍圖變數、節點釘選值,以及C++變數。
  • 在與 C++程式碼相同的偵錯工作階段中逐步檢視 Blueprint 的執行框架。

這種統一的偵錯體驗可協助有效地解決這兩種編碼範例之間的問題,而不需要在不同的偵錯工具之間切換。