【问题标题】:How to setup HUD widgets correctly in UE4如何在 UE4 中正确设置 HUD 小部件
【发布时间】:2020-11-08 06:52:14
【问题描述】:

我正在学习有关基于虚幻引擎的游戏开发的 Udemy 教程。我也在 Udemy 上发布了同样的问题。我会尽力解释我面临的问题。

什么有效

我已经设置了

  • 游戏模式名为FPS_GameMode
  • 名为FPS_GameInstance的游戏实例,
  • HUD 命名为FPS_HUD

我已将 FPS_GameMode 中的 HUD 设置为 FPS_HUD。 我已在项目设置中将 FPS_GameMode 指定为 GameMode。

现在我已经创建了 2 个蓝图 MainHUDUI_DynamicCrosshairUI_DynamicCrosshair 包含与在角色移动时调整十字准线大小相关的功能。 (如果角色移动,它会散开)。 我在MainHUD 中使用了这个十字准线(在MainHUD 的视口中使用了UI_DynamicCrosshair)。 在我的FPS_Character 蓝图中,我正在创建MainHUD 小部件并将其添加到视口中。

我玩游戏时会显示十字准线小部件,但我的角色移动时它不会更新。

什么不起作用

我需要在UI_DynamicCrosshairFPS_Character 中调用定义的功能,以便在角色移动时触发它。 为此,我尝试使用MainHUD 引用,因为它可以在FPS_Character 蓝图中访问,假设我可以通过MainHUD 引用访问UI_DynamicCrosshair。但这不起作用。 UI_DynamicCrosshair 无法通过 MainHUD 引用访问。

您能否分享一份清单/步骤清单,以便我可以交叉检查我所做的一切并找出我错过了什么?

如果您需要更多详细信息,请告诉我。

【问题讨论】:

    标签: unreal-engine4 unreal-blueprint unreal-umg


    【解决方案1】:

    我假设它们都在蓝图中,因为您没有提到任何 C++ 代码。

    在我看来,您的 UI_DynamicCrosshair 实例只是设置为 private,因为如果将其设置为 publicMainHUD 引用访问它/强>。 当您的 UI_DynamicCrosshair 变量被选中时,请确保 this checkbox 在您的 MainHUD 类中未选中

    虽然,实现这一点的更好(或更好)的方法是在您的MainHUD 中创建一个公共函数,比如说SetCharacterMovement(Boolean bIsMoving),并实现执行以下操作的逻辑调整大小。

    然后,当您需要更新十字准线时,您可以从您的FPS_Character 引用您的MainHUD调用此函数。这样一来,您的 PlayerCharacter 就不必了解 HUD 的内部逻辑,它会照顾自己(及其“孩子”)。

    这是一个名为 Separation of concerns 的原则,它将帮助您以简洁的方式设计事物。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2011-03-18
      • 1970-01-01
      • 2018-12-28
      相关资源
      最近更新 更多