UE4面向对象之类的继承

蓝图中类的继承

1. 创建文件夹

创建一个文件夹用于存放工程文件
这里写图片描述

2. 创建一个蓝图类

创建一个Actor蓝图类,命名为 BT_C_ActorOne
这里写图片描述

3. 放入一个模型

双击打开编辑面板后,添加一个组件,搜索Static Mesh。选择后命名为ClassA,为其选择一个模型
这里写图片描述

4. 修改Transform参数

在当前状态下,该模型修改不了Transform参数,我们需要再添加一个Scene组件,然后将ClassA放在Scene里面。
这里写图片描述

5. 再创建一个类

找到之前创建的 BT_C_ActorOne 蓝图类,再创建一个类,命名为BT_C_ActorTwo
这里写图片描述

6. 查看第二个类

由于这个类继承了BT_C_ActorOne,所以本身就存在一个ClassA的模型。其实在ClassA里面,我们也是继承了Actor的类,而Actor的类也是继承了Object的类的。在默认情况我,是看不见父类级别的东西。点击小眼睛,勾选 Show Inherited Variables。
这里写图片描述

7. 修改第二个类

  1. 在第二个类中创建一个Static Mesh组件。在这里,可以放在ClassA同级目录下,也可以放在ClassA下一级。在同级目录里,两者没有关系,在子级目录里ClassA的移动可以带动ClassB的移动,ClassB的移动不会带动ClassA。现在放在同级目录下,给ClassB一个模型。
    这里写图片描述
    这里写图片描述

8. 放入场景

创建一个类是为了更加方便的管理场景的资源,继承是为了更加合理有效的利用资源和更高效的开发速度。回到操作界面,将类拖入到场景中。
这里写图片描述

9. 总要有点区别

以目前来看貌似和不用类没什么区别,现在来创建一点区别。回到这个椅子所在的蓝图类,打开事件图表。就简单的弄点小玩意,在碰撞物体的时候转个圈吧。创建一个命叫bool的布尔型变量。

  1. 蓝图节点
    这里写图片描述
  2. 时间线
    这里写图片描述

区别

我们只需要写一次代码就可以无限使用,是不是比每个都写要好多了呢?

10. 再来点不同的

  1. 每次都旋转180度是不是有点小限制呢?我们将它放在一个我们随时能改变的地方!来到BT_C_ActorOne蓝图中,创建一个Float(浮点)类型的变量。创建后将眼睛打开,表示显示为全局变量。
    这里写图片描述
  2. 回到操作界面,发现在Default目录下,我们可以修改这个,回到BT_C_ActorOne蓝图。
    这里写图片描述
  3. 规范一下命名,将Float换成Rotation。
    这里写图片描述
  4. 现在来发挥这个变量的作用了,打开事件图表,将TimeLine和节点改一下,把Rotation的默认值改为180。
    1. 时间线
      这里写图片描述
    2. 蓝图节点
      这里写图片描述
  5. 现在可以根据Rotation的值来改变旋转多少度了。
    这里写图片描述

10. 总结

  1. 类的继承大大的提升了开发效率,节约计算机资源。也使得面向对象的编程效率大大提高。
  2. B类继承A类,在默认情况下和A类是一样的。当改变B类的时候,继承才开始真正的为你效力。
  3. 继承对象和被继承对象的关系就像父子关系一样。