前言
在虛幻中創建越來越復雜和靈活的 UserWidget 藍圖時,一個問題是它們在編輯器中的外觀與它們在游戲中的最終外觀可能有很大不同。
庫存面板示例
假設你想創建一個通用的庫存顯示小部件。我們可以在整個 UI 中使用它,無論我們需要在哪里顯示某些內容。
- 標題,描述所顯示項目的類別
- 由X 列和Y 行組成的網格。
- AUserWidget代表單個項目,我們將在網格中顯示它。
默認情況下,如果您UUserWidget在藍圖中將其創建為子類,則在編輯器中它可能看起來像一個空的小部件,標簽顯示其默認的占位符文本。
請注意,我們可以添加一個公共變量來定義小部件在游戲中設置的標題、行數和列數,但編輯器中的外觀幾乎是空的。
另一方面,在游戲中,此小部件的大小和外觀將完全改變。其標簽將被更新,并將由庫存物品小部件填充以顯示每個物品。
我們可以用 C++ 解決這個問題,讓小部件在編輯器中更新。關鍵是SynchronizeProperties中的函數UUserWidget。在編輯器中,每次修改屬性或編譯藍圖時都會調用它。我們可以覆蓋它并在里面使用它來初始化我們的用戶小部件,就像在游戲中設置它一樣。
InventoryPanelWidget.h