解开蓝图的面纱:如何读懂蓝图中的逻辑?

蓝图到底是个啥,掰开揉碎来讲解一下蓝图内部的具体性质

1,蓝图性能差:while循环执行次数多带来的性能消耗+大量虚函数使用运行时的开销+每次用到Cast时做动态类型检查的开销。蓝图适用的场景为实现较为简单的逻辑,例如一个小玩法,UI,LevelSequence等

思路:蓝图应该怎么写?

很多人包括我自己在内,对蓝图感觉束手无策,始终无法真正掌握

原因在于,不是想的不够复杂,而是想的不够简单

在代码中,做出来一个烂东西比想要做完美更好

蓝图中是什么?节点

节点是什么?函数

函数实现什么功能?不知道——>那就调用,不管三七二十一直接调用,至于需不需要返回值,需要什么值,都不需要理会,你甚至可以直接给一个0作为返回值

学习蓝图,先看蓝图的功能,之后一步一步慢慢来,看需要提供什么值,这个值是不是需要要的?

首先需要明确一点,在实际的开发工作中,代码或者蓝图,以及类的编写,都是以实际功能为导向,即都是为了实现某一个确定的功能,例如实现一个UI,点击触发各种事件,或者人物移动,开枪,烟雾特效等等,诸如此类。也因此,我们围绕功能去做实际的开发工作。

首先C++中最常用的一个概念就是类,类本身也就是一个蓝图,并不占用内存,只有实例化之后才会真正的占用内存空间,在实例化之前,它只是一种设想,并不真正存在。而根据开发的需要以及C++追求的代码复用,还有高效的特点,又衍生出类的继承,引申出父类和子类的概念。以及类的改写,引申到虚函数的实现

那么这些特点在UE中如何展现呢,在UE中,类是以怎样的形态出现,又如何使用呢

在【内容浏览器】中,右键,可以选择添加Blueprint Class,在弹出框中就可以选择父类

(值得一提的是,所有的类,都或直接或间接的继承自Object)

首先记住一个顺序:Object>Actor>Pawn>Character

Actor可以是任何物体,或者任何概念

Pawn继承Actor,相当于一个对象类,可以是人,或者妖怪等。举例:我们经常使用PlayerController发出指令控制Pawn移动

Character继承Pawn,这个类提供了一些基础又进阶的封装好的移动功能,例如移动,跳跃等。通常可以用来创建角色类,编写一些角色类通用的逻辑,也是PlayController来控制

PlayController获取玩家的输入指令

Pawn使用技巧:一些通用的大量采用到的代码,例如无论是人还是怪物,都拥有生命,外观,移动等属性。例如无论什么网页,都会有一些通用的图形UI以及可视化元素方框圆圈等

Character就是一些对象特有的功能,例如怪物可以飞翔,但是人类不可以

实操:

1,EventBeginPlay,在创建任意蓝图时都会自带的一个节点,蓝图代码大多数都从这里开始执行

2,OnActorBeginOverlap,触碰开始时执行:进入区域触发事件,是指当指定对象与另一个对象产生重叠

与之对应的,3,OnActorEndOverLap,触碰结束时执行事件:退出区域事件

可以应用到的场景:例如靠近显示互动UI,靠近机关遭遇陷阱,与武器碰撞产生伤害,碰撞检测等

3,Set Visbility,设置目标是否可见,可以是任意对象,例如隐藏怪物,提示等

4,Destory Actor,字如其名,删除Acrtor

5,Delay,延迟,作用是延迟下一个节点的执行时间

6,Sequence序列,其作用是解决一个蓝图节点只能有一个输出的痛点

区分节点:

红色的节点:事件节点

蓝色带f的节点:功能节点

绿色节点:获取角色控制器

单独的椭圆节点:变量

灰色带工具的节点:宏

紫色节点:脚本(不可被删除且永远存在)

未完待续

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值