UE5 - 蓝图类的继承与转换详解3(类型转换、点击获取指定类型的对象引用)
作者:hangge | 2025-08-23 10:24
子类蓝图可以轻松地转换到父类蓝图中,如果一个把父类作为类型的变量中存在对子类的引用,则可以将此父类转换到子类中。本文通过样例演示如何进行类型转换。
三、类型转换
1,父类变量容纳子类
(1)在“内容浏览器”面板中 新建一个“Actor” 类蓝图并命名为“BP_Geometry”,作为父类。双击打开“BP_Geometry” ,在“组件”面板中新建一个静态网格体组件。

(2)新建一个“浮点”型变量并命名为“GeometrySize”

(3)在“事件图表”面板中新建“自定义事件”命名为“PrintValue”,并添加如下打印 GeometrySize 参数值逻辑。

(4)在“内容浏览器”面板中使用鼠标右键单击“BP_Geometry”蓝图,执行“创建子蓝图类”菜单命令,依次创建两个新的子类并分别命名为“BP_Cube”和“BP_Cylinder”

(5)双击打开“BP_Cube”蓝图,在“组件”面板中可以看到静态网格体组件一起被继承,我们设置“静态网格体”为“Shape_Cube”。
- 选择“BP_Cube(自我)”组件,设置“Geometry Size”为 100.0。

(6)接着双击打开““BP_Cylinde”蓝图,设置“静态网格体”为“Shape_Cylinde”。
- 选择“BP_Cylinder(自我)”组件并设置“Geometry Size”为 200.0

(7)进入“关卡蓝图”窗口,使用“事件开始运行”节点连接“获取类的所有 actor”节点,设置“Actor Class"为“BP_Geometry”,再次放置鼠标指针到引脚上会发现第 2 行内容变成了“BP_Geometry 对象引用数组”。

(8)接着我们添加如下逻辑,使用“For Each Loop” 节点可以遍历数组中的元素,打印出每一个元素的显示名称,并触发其PrintValue 事件。

(9)编译并保存后,添加“BP_Cube”和“BP_Cylinder”两个蓝图到关卡中。进入 SIE 运行模式,通过打印出来的信息可以看出出父类作为对象引用变量的类型时可以容纳子类,并且此引用的变量、函数等属性都是子类中的属性。

2,点击获取对象引用
(1)我们常常需要得到某个被鼠标点击的物体的引用,首先打开“关卡蓝图”窗口,添加如下逻辑确保可以显示鼠标光标。

(2)接着添加“按通道获取光标下的命中结果”节点,连接该节点的“目标”引脚到“获取玩家控制器”节点,使用“中断命中结果”节点拆分“Hit Result”引脚。添加“类型转换为 BP_Geometry”节点,连接“Object”引脚到“中断命中结果”节点的“Hit Actor”引脚上,使用“鼠标左键”事件连接类型转换节点。
提示:“类型转换为 BP_Geometry”节点的“Object”引脚对象不是“BP_Geometry”类及其派生类的对象,那么将会触发“类型转换为 BP_Geometry”节点的“Cast Failed”引脚,不会正常执行“Print String”节点。
(3)编译并保存后,添加“BP_Cube”和“BP_Cylinder”两个蓝图到关卡中。进入 PIE 运行模式,单击关卡中的模型,左上角会出现两个蓝图的对象显示名称。

全部评论(0)