前言
在虚幻中创建越来越复杂和灵活的 UserWidget 蓝图时,一个问题是它们在编辑器中的外观与它们在游戏中的最终外观可能有很大不同。
库存面板示例
假设你想创建一个通用的库存显示小部件。我们可以在整个 UI 中使用它,无论我们需要在哪里显示某些内容。
- 标题,描述所显示项目的类别
- 由X 列和Y 行组成的网格。
- AUserWidget代表单个项目,我们将在网格中显示它。
默认情况下,如果您UUserWidget在蓝图中将其创建为子类,则在编辑器中它可能看起来像一个空的小部件,标签显示其默认的占位符文本。
请注意,我们可以添加一个公共变量来定义小部件在游戏中设置的标题、行数和列数,但编辑器中的外观几乎是空的。
另一方面,在游戏中,此小部件的大小和外观将完全改变。其标签将被更新,并将由库存物品小部件填充以显示每个物品。
我们可以用 C++ 解决这个问题,让小部件在编辑器中更新。关键是SynchronizeProperties中的函数UUserWidget。在编辑器中,每次修改属性或编译蓝图时都会调用它。我们可以覆盖它并在里面使用它来初始化我们的用户小部件,就像在游戏中设置它一样。
InventoryPanelWidget.h