【UE5】蓝图

news/2024/5/18 16:10:47 标签: ue5, 虚幻引擎, ue4, 游戏程序

在开发过程中,不可避免地会有一些蓝图的操作。同时,蓝图也是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. 使用蓝图难以理解游戏运行的方式

http://www.niftyadmin.cn/n/5203909.html

相关文章

机器学习入门(第三天)——K近邻(物以类聚)

K-nearest neighbor 知识树 怎么区分红豆绿豆? How to distinguish red beans and green beans? 之前我们构造了一个超平面来解决这个问题,既然超平面可以切分,是不是红豆之间和绿豆之间有着某种关联。即:物以类聚。 如果一个…

CmakeLists编译的动态库.so移动到其他位置后,提示找不到该库的依赖库解决办法

主要问题: 最近在搞海康SDK调用相机,发现在linux下一直调用不起来相机,总是提示error code:29,注册失败,重新编译优惠存在找不到依赖库的问题。 1.异常 CmakeLists编译的动态库.so移动到其他位置后&#…

在Spring Boot中使用ECharts绘制数据图表

使用ECharts来完成一些花里胡哨的图表吧,一般这种需求我们在我们的客户端不太常见,但是,我们在后端进行各种数据统计的时候就会发现ECharts的优点了,比如我们常常做的柱状图,折线图,雷达图等可视化形式&…

1

【任务 1】私有云服务搭建[10 分] 【题目 1】基础环境配置[0.5 分] 【题目 2】Yum 源配置[0.5 分] 【题目 3】配置无秘钥 ssh[0.5 分] 【题目 4】基础安装[0.5 分] 【题目 5】数据库安装与调优[0.5 分] 【题目 6】Keystone 服务安装与使用[0.5 分] 【题目 7】Glance 安装与使用…

Vue 中修改了计算属性(computed) 或者它的依赖变量,计算属性的值没有变化的几种情况

目录 第一种情况:直接修改计算属性 不生效举例 解决方案1:直接修改依赖变量 解决方案2:为计算属性设置 set 方法 第二种情况:直接修改依赖数据 不生效举例 解决方案 第一种情况:直接修改计算属性 在Vue中&#x…

可上手 JVM 调优实战指南

文章目录 为什么要学 JVM一、JVM 整体布局二、Class 文件规范三、类加载模块四、执行引擎五、GC 垃圾回收1 、JVM内存布局2 、 JVM 有哪些主要的垃圾回收器?3 、分代垃圾回收工作机制 六、对 JVM 进行调优的基础思路七、 GC 情况分析实例八、最后总结 全程可上手JVM…

PyCharm玩转ESP32

想必玩ESP32的童鞋都知道Thonny,当然学Python的童鞋用的更多的可能是PyCharm和VsCode Thonny和PyCharm的对比 对于PyCharm和VsCode今天不做比较,今天重点说一下用PyCharm玩转ESP32,在这之前我们先对比下Thonny和PyCharm的优缺点 1、使用Tho…

ubuntu上编译proj-7.1.0出现tiffio.h找不到的错误

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 在编译ubuntu上编译proj-7.1.0出现下面错误: grids.cpp:41:10: fatal error: tiffio.h: No such file or directory41 | #include "tif…