【UE5】蓝图

在开发过程中,不可避免地会有一些蓝图的操作。同时,蓝图也是UE很有特色的一个内容。

了解蓝图是什么(What is BP?)

广义上:蓝图是UE内置的脚本语言,可以书写类似代码的逻辑。(任何可以连那种块块的可视化代码都可以视为蓝图)
狭义上:指Blueprint Class,即蓝图类,是一个和面向对象语言类似的概念。(蓝图也有继承关系,基类是Object类。蓝图相对于传统的C++代码,它可以组合资源实现逻辑,而C++只有实现逻辑的功能,并不能组合资源)
蓝图中易混淆的概念:

  1. 流程线:
    · 通过白线连接,蓝图按照白线从前到后运行
    · 并不是所有节点都有流程线
    · 选中含有流程线的节点,按F9可以打上断点
    · 断电后,F10每次执行一个流程节点(单步执行)

一个很长串的逻辑,不一定完全依赖于逻辑线,单纯的数据线就可以实现一个较为复杂的逻辑,

  1. 数据线:
    · 通过各种彩色线(数据引脚)相连的节点,表示数据流动的方式与方向(颜色表示数据类型)
    · 部分节点没有逻辑线,是纯粹的数据节点,最终必须作用于流程节点,否则数据不能被使用
    · 我们把一个节点左侧的引脚叫“输入引脚”,右侧的箭头叫“输出引脚”
    输入/出引脚
    部分接口存在数据节点和流程节点两种形式,注意区分
    · 每个数据输入引脚会重新计算所有数据流

数据节点:未连接流程线
流程节点:存在流程线

了解蓝图基本的使用方法

让我们打开UE5看一个例子吧!
在这里插入图片描述

在这里插入图片描述
打开全蓝图编译器
在这里插入图片描述
在Event Graph界面进行蓝图编辑
在这里插入图片描述

简单的理解如何优美的构建蓝图

事件分发器是蓝图中相较于C++现成的工具

事件分发器(EventDispatcher)
通过将一个或多个事件绑定到 事件分发器 ,可以在调用事件分发器时触发所有这些事件。这些事件可以绑定到蓝图类中。但事件分发器也允许在关卡蓝图中触发事件
· 可以绑定事件,每一个分发器有着自己的参数,事件必须匹配自身参数
· Dispatch接收外部的call并分发给所有绑定在自身下的Event
· Event可以绑定一个或多个Dispather,也可以在流程中解绑

在这里插入图片描述
新增事件分发器
在这里插入图片描述
添加参数
在这里插入图片描述
再分发器上绑定事件
在这里插入图片描述
通过事件输入引脚连入新的事件
在这里插入图片描述
· 如ActorBP中已有Event(如 Event End Play),也有Dispather(如End Play),通常我们使用了现成的Event,而没有关心内部的Dispather,我们也可以给原有的Dispather绑定自己的事件,或者创建新的Dispather或Event

函数(Function):
是属于特定蓝图(Blueprint)的节点图表,他们可以在蓝图中重复使用。函数具有一个由节点指定的单一进入点,函数的名称 包含一个执行输出引脚
在这里插入图片描述
纯函数(Pure Function):
· 函数可以为 纯 类型,纯函数承诺不以任何方式修改 状态 或类的成员
· 纯函数在调用时没有流程线,但在函数内部有
· 纯函数连接到数据引脚,当需要依赖它们的数据时,编译器会自动执行它们,对于纯函数连接到的每个节点,纯函数将被调用一次。
在这里插入图片描述
宏(Macro):
宏有一个有隧道节点指定的入口点和出口点,每个隧道都可以有任意数量的执行或数据引脚,当在其他蓝图或图表中使用时,这些引脚在宏节点中可见
· 宏不可继承
· 宏可以控制流程而函数并不可以
取最大值
双重嵌套IF语句
折叠节点(Collapse Nodes)
· 折叠节点是一堆节点的折叠
· 隶属于某一面板,不应该复用节点
· 仅起到简化蓝图的作用

了解蓝图的优劣

优点:

  1. 可视化编程
  2. 方便调参,快速开发
  3. 不需要编译,可以快速实现简单逻辑
  4. 语法糖多,可以缓解阅读压力
  5. 网上的教程和接口文档较多,方便查询
  6. 可以在实现逻辑的同时组合资源

缺点:

  1. 可视化编程,节点较多极其难以阅读
  2. 性能低下
  3. 不方便调试
  4. 接口类型多,混乱,不方便查找
  5. 难以实现较为复杂的运算或算法逻辑
  6. 难以修改UE提供的内容,拿不到基类数据结构,可实现逻辑较少
  7. 语法糖虽然多,但语法逻辑不清晰,连线没有约束,未定义行为极多
  8. 定义变量极其困难,数组操作繁琐
  9. 蓝图节点特殊性强,复用性弱
  10. Cast操作直接导致强引用,加载蓝图性能低下
  11. 使用蓝图难以理解游戏运行的方式
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜_tu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值