UE5 - 蓝图接口的使用详解(接口创建、添加、使用)
作者:hangge | 2025-08-25 10:05
在大型项目中,经常需要在不同类型的蓝图之间进行解耦通信。蓝图接口(Blueprint Interface)正是为此而生。蓝图接口是一种“纯虚”蓝图,里面只声明函数(不包含逻辑实现)。任何蓝图类都可以实现该接口,并在自身事件图中定义具体逻辑。通过蓝图接口可以让让调用者无需关心具体实现即可发起调用。本文将通过样例演示 UE5 中创建、添加和使用蓝图接口的完整流程。







(4)编译并保存后进入 PIE 运行模式,单击关卡中的“Human”蓝图与“Monster”蓝图,可以看到两个蓝图都在左上角输出了伤害值。


1,接口创建
(1)在“内容浏览器”面板的空白处单击鼠标右键并执行“蓝图 > 蓝图接口”菜单命令,即可创建一个蓝图接口。这里我将新建的“蓝图接口”命名为“Blueprint_Interface”

(2)打开“Blueprint Interface” 蓝图接口,在“我的蓝图”面板中单击“添加”按钮并执行“函数”菜单命令,新建一个函数,将其命名为“DamagePass”

(3)选择新建的函数后,可以在“细节”面板中单击“输入”右侧的“新建输入参数”按钮创建两个参数:一个是“浮点”型变量“Damage”的参数,另一个是“命名”型变量“Causer”的参数,可以在这两个参数的卷展栏中设置“默认值”(目前还不需要)

2,在蓝图中实现接口
(1)在“内容浏览器”面板中新建两个“Actor”类蓝图,一个命名为“Monster”,另一个命名为“Human”。

(2)双击打开“Human”蓝图,在“组件”面板中单击“添加”按钮添加一个立方体组件,拖曳立方体组件到“DefaultSceneRoot”组件上并将其覆盖。
- 在“Monster”蓝图中执行同样的操作,只不过在添加组件时要添加球体组件。

(3)分别在“Human”和“Monster”蓝图的工具栏中单击“类设置”按钮登类设置,接着在“细节”面板中单击“添加”按钮并选择之前创建的“Blueprint_Interface” 蓝图接口,最后编译蓝图。

(4)分别进入“Human”和“Monster”蓝图的“事件图表”面板,添加“事件 DamagePass”节点,接着在后方添加一个“打印字符串”节点,可以使用“格式化文本”节点使“打印字符串”节点输出的内容更简洁、直观,设置“Format”引脚为“{Causer}: {Damage}”后将它们连接起来。

3,接口调用
(1)编译并保存后将“Human”蓝图和“Monster”蓝图拖曳到关卡中。

(2)为了能够使用鼠标点击物体,首先打开“关卡蓝图”窗口,添加如下逻辑确保可以显示鼠标光标。

(3)然后添加“鼠标左键”节点,并直接使用“Damage Pass”节点调用函数,设置“Damage”为 25.0,“Causer” 为“Self”。
提示:如果没有特殊限定,如只允许某一类执行“DamagePass”事件,则可以不使用转换节点,可对任意类调用“DamagePass”函数。


附:自动获取并遍历所有实现接口的对象
(1)在关卡蓝图中添加“Get All Actors with Interface”节点,设置接口类型为“BPI_Interactable”,这样变能获取所有实现该接口的对象。

(2)我们可以使用“ForEachLoop”节点逐个处理每个对象,调用“DamagePass”这个接口函数并传递参数。

(3)编译并保存后进入 PIE 运行模式,可以看到左上角自动打印如下信息。

全部评论(0)