全幼儿园最帅677 2026-01-16 16:57 采纳率: 0%
浏览 1

击该用户控件的时候在该actor中执行蓝图节点

img

img

img


我在UE的actor中加入了一个Widget,作为屏幕上的用户控件,希望在点击该用户控件的时候在该actor中执行蓝图节点,我该怎么做,现在也打印不出来。

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-01-16 16:58
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    在 Unreal Engine 中,如果你在一个 Actor 中添加了一个 UserWidget(用户控件),并希望在点击该 UserWidget 时触发该 Actor 的蓝图节点,你需要进行以下几个关键步骤来实现这个功能。以下是详细的解决方案:


    核心目标:

    • UserWidget 被点击时,通知对应的 Actor 执行特定的蓝图逻辑。

    🔧 解决方案步骤

    1. 确保 UserWidget 正确绑定到 Actor

      • 确保你已经在 Actor 的蓝图中创建了 UserWidget 实例,并将其显示在屏幕上。
      • 例如:使用 Create Widget 节点创建一个 UserWidget,然后通过 Add to Viewport 显示出来。
    2. 为 UserWidget 添加点击事件监听器

      • UserWidget 的蓝图中,找到 OnClicked 事件(或自定义点击事件)。
      • 你可以通过 Event Graph 添加一个 OnClicked 节点。
    3. 将 UserWidget 的引用传递给 Actor

      • Actor 的蓝图中,保存对 UserWidget 的引用。
      • 例如:使用 Get UserWidgetCreate Widget 后,使用 Set Variable 存储引用。
    4. 在 UserWidget 的 OnClicked 事件中调用 Actor 的函数

      • UserWidgetOnClicked 事件中,获取其所属的 Actor
      • 使用 Get OwnerGet World 获取 Actor。
      • 然后调用 Actor 的自定义函数(如 MyFunction)。
    5. 在 Actor 的蓝图中实现自定义函数

      • Actor 的蓝图中创建一个自定义函数(如 MyFunction)。
      • 在该函数中执行你需要的逻辑,比如打印日志、播放动画等。

    📌 示例代码(Blueprint 表达)

    A. Actor 蓝图中的步骤:

    1. 创建一个 UserWidget 变量(例如:MyWidget)。
    2. 使用 Create Widget 创建实例,并通过 Add to Viewport 显示。
    3. MyWidget 设置为变量。

    B. UserWidget 蓝图中的步骤:

    1. 打开 UserWidgetEvent Graph
    2. 添加 OnClicked 事件节点。
    3. OnClicked 节点拖出线,选择 Get Owner(获取拥有该 Widget 的 Actor)。
    4. Get Owner 拖出线,选择 Cast To YourActorClass(将 Actor 强制转换为你自己的 Actor 类)。
    5. Cast To YourActorClass 拖出线,选择 MyFunction(你的自定义函数)。
    6. Actor 的蓝图中创建 MyFunction 并实现逻辑。

    🧪 示例:打印日志测试

    Actor 的蓝图中:

    • 创建一个函数 PrintMessage()
    • 在该函数中添加 Print String 节点,内容为 "UserWidget was clicked!"

    UserWidget 的 OnClicked 事件中:

    • 如上所述,调用 PrintMessage() 函数。

    🛠️ 注意事项

    • 确保 UserWidget 是由 Actor 创建并管理的,否则无法正确获取其 Owner。
    • 如果你在 C++ 中实现,可以使用 FOnClickedSlate 的事件系统。
    • 如果使用的是 UMG,确保 UserWidgetAWidget 类型,并且是通过 CreateWidget 方法生成的。

    ✅ 最终效果

    • 当你点击 UserWidget 时:
      • 触发 UserWidgetOnClicked 事件。
      • 通过 Get Owner 找到对应的 Actor
      • 调用 Actor 的函数(如 PrintMessage)。
      • 在控制台输出信息,表示成功触发。

    🧩 常见问题排查

    | 问题 | 解决方法 | |------|----------| | 用户控件未响应点击 | 确保 Hit Test Visibility 设置为 HitTestVisible | | 无法获取 Owner | 确保 UserWidget 是由 Actor 创建的 | | 函数未被调用 | 检查是否正确地进行了 Cast To 和函数调用 |


    如果你能提供具体的蓝图截图或部分代码片段,我可以进一步帮你调试和定位问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月16日