对类功能进一步封装完成蓝图通信
优快云的博客添加图片太麻烦了,而且链接网页图片会出现错误,如果需要看详细文章,请访问我的微信公众号《猎梦虚幻研究社》
在前一篇中,我们已经将蓝图通信的功能成功的从关卡蓝图中封装到了独立的蓝图类中。
现在我在这里提出一个新的需求:
当我们指定物体之后,还是需要先记录“门”的初始位置,然后在初始位置的基础上进行移动。有没有办法不记录初始位置达到效果呢?省去一个变量,并且减少BeginPlay中的逻辑。
所以我决定将“门”也创建成一个Actor类,开门的动作直接改为这个Actor类自身局部坐标的改变,这样就将功能分解了,避免了功能的堆积(虽然门通常不会用这种方法来实现,但是因为它的逻辑直观简单,所以我用这个例子来讲解蓝图通信)。
说到这里,我们转回内容浏览器再创建一个Actor类,命名为BP_Door来当做我们的门。
这个蓝图中同样添加一个StaticMesh组件,然后设置为我们准备好的门的模型。因为触发的事件我们放在了BP_OpenDoor蓝图中,所以我们只需要一个模型即可。我们不改动模型组件的名称,仍然叫StaticMesh(记得给这个组件赋一个实际模型)。