类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
类就是这样的,比如说学生是一个类,那么学生包括年龄、性别、姓名这些都是成员变量,那么学生在听课是他的一个属性,学生吃饭也是他的一个属性,那么就叫做成员方法,另外学生是一个类,那么学生里面的某个人比如说张三他就是一个对象,类是需要对象实现,那么张三就有了上面定义的性别、姓名、年龄、听课、吃饭这些的变量和方法。
蓝图中的类
1. 创建蓝图类
- 在操作界面的内容浏览器里右击创建一个蓝图类
- 选择Actor类,这是系统为我们创建好的类。选择好后,将其命名为BP_C_Actor_OpenDoor
2. 进入蓝图类中
这就是一个Actor类的界面,首先要明白Actor的含义。在UE4中,场景里面所有的内容都可以称作Actor,它们是这个场景里的演员,是组成这个场景的元素。所以,Actor就是一个构成游戏的元素。
3. 使用蓝图类
- 回到操作界面,将 BP_C_Actor_OpenDoor 拖动到场景中。
现在,可以发现它其实就是一个模型,那么它特殊在哪里呢?直接上手做个事件吧。就做触碰到它,它就从这个世界消失掉。首先,我们先将这个丑陋的模型替换掉。进入蓝图界面,点击Add Component。搜索 StaticMesh 选择它,将它拖动到DefaultSceneRoot上面放开,这样就替换掉了丑陋的模型。
2. 选中细节面板里面的Static Mesh,也就是静态网格。点击那个none,代表那里没有任何模型,选择第二个模型。这时候网格*就会出现一个模型。
3. 现在我们已经有一个模型了,回到操作界面中。在这里,我们先保存一下,选中类然后 Ctrl+S或者选择File下面的Save All。我们发现模型已经替换成我们选择的那个模型了。
4. 点击Play播放一下,从物体上走过,发现是直接穿过去的。因为,还没有给这个模型添加碰撞体。回到蓝图界面的ViewPort视口中,双击Static Mesh。
5. 这时候,我们进入了另一个编辑器,静态网格编辑器。在这里只是简单的添加一个碰撞体,不做过多的讲述。在以后的教程中会更加详细的介绍这个编辑器。点击Collsion,选择Add Box Simplified Collsion,添加一个盒子碰撞体,就会出现下图中绿色的线。
6. 这时候,已经添加了一个碰撞体,开始编写一些简单的蓝图事件。来到蓝图类中,点击事件图表。
7. 进入事件图表后,选中 Static Mesh,然后鼠标移动到网格内右击生成节点,选择以下节点。
8. 这个事件的意思是当Static Mesh发生碰撞的时候触发。触发时我们需要消灭掉这个模型。将Static Mesh拖动到场景中,选择Get。然后连接一条线出来,选择DestroyComponent节点。
9. 这个时候我们已经可以达成最初的目标了。来总结一下以上所说的意思。
- 通过内容浏览器创建蓝图类,进入蓝图类中选择一个组件覆盖掉默认物品。
- 进入静态网格编辑器,给物品创建一个碰撞体。这样就可以触发碰撞事件了。
- 通过碰撞事件检测发生碰撞的时候就删除掉自己。
类的特殊性
试着往场景里面拖动更多的盒子,依次碰撞它。在之间博客的操作中,一个对象对应着一组蓝图节点,如果是多个盒子则需要多组蓝图节点,这些节点的意思都是一样的只不过目标不一样而已。像这种情况就会造成资源的浪费,所以我们创建一个蓝图并且可以多次使用它。
总结
类是一个很大,很抽象的概念。它可以说是一群拥有相似属性的东西的集合。也可以是一个空空的箱子。类的存在是为了方便程序开发,为了资源的重复利用,减少代码重复度。在蓝图可视化编程中,类可以理解为一个场景里面需要重复的东西。在这一篇博客中只是一些比较简单的类的基础,在以后的博客中会更加深入的讲解蓝图中的类。也会更加深入的探索蓝图的奇妙世界。