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. 修改第二个类
- 在第二个类中创建一个Static Mesh组件。在这里,可以放在ClassA同级目录下,也可以放在ClassA下一级。在同级目录里,两者没有关系,在子级目录里ClassA的移动可以带动ClassB的移动,ClassB的移动不会带动ClassA。现在放在同级目录下,给ClassB一个模型。
8. 放入场景
创建一个类是为了更加方便的管理场景的资源,继承是为了更加合理有效的利用资源和更高效的开发速度。回到操作界面,将类拖入到场景中。
9. 总要有点区别
以目前来看貌似和不用类没什么区别,现在来创建一点区别。回到这个椅子所在的蓝图类,打开事件图表。就简单的弄点小玩意,在碰撞物体的时候转个圈吧。创建一个命叫bool的布尔型变量。
- 蓝图节点
- 时间线
区别
我们只需要写一次代码就可以无限使用,是不是比每个都写要好多了呢?
10. 再来点不同的
- 每次都旋转180度是不是有点小限制呢?我们将它放在一个我们随时能改变的地方!来到
BT_C_ActorOne
蓝图中,创建一个Float(浮点)类型的变量。创建后将眼睛打开,表示显示为全局变量。
- 回到操作界面,发现在Default目录下,我们可以修改这个,回到
BT_C_ActorOne
蓝图。
- 规范一下命名,将Float换成Rotation。
- 现在来发挥这个变量的作用了,打开事件图表,将TimeLine和节点改一下,把Rotation的默认值改为180。
- 时间线
- 蓝图节点
- 时间线
- 现在可以根据Rotation的值来改变旋转多少度了。
10. 总结
- 类的继承大大的提升了开发效率,节约计算机资源。也使得面向对象的编程效率大大提高。
- B类继承A类,在默认情况下和A类是一样的。当改变B类的时候,继承才开始真正的为你效力。
- 继承对象和被继承对象的关系就像父子关系一样。