【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. 使用蓝图难以理解游戏运行的方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/206502.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAE 2.0,让容器化应用开发更简单

云布道师 云原生这个概念从提出,到壮大,再到今天的极大普及,始终处于一个不断演进和革新的过程中。云原生体系下应用的托管形态是随着企业应用架构在不断演进的。最早的应用大多是集中式、单体式的,应用通过优雅的分层来实现领域…

如何在windows使用别名远程执行命令

需求背景 在开发中,需要在服务器执行脚本,需要如下几步操作: 1.打开xshell 2.登录服务器 3.进入命令脚本的路径 4.执行脚本 但是,作为懒人来说,操作太繁琐了,真麻烦,能不能一键就解决那么多操作?所以,开始研究windows有没有这个东西,而且不需要额外的软件就可以实现的.结…

如何查找批量企业的联系方式?

​我们都知道,企业的联系方式在企业的年报中就能找到,但是年报上的电话真的是你要找的吗? 很多企业年报上留的是第三方代记账公司,或者是其他没用的号码,这对于做B端业务的企业来说是不够精准的。 市面上有很多做企业…

05 取样器(BeanShell和JSR223 Sampler)

一、取样器作用 1、取样器可以理解为Jmeter的桥梁,或者是Jmeter的加工厂; 2、Jmeter使用过程中,经常有些数据不能直接使用,需要加工后才能使用;这样就用到了取样器;但是这里存在问题,Jmeter中的…

UVA11584划分成回文串 Partitioning by Palindromes

划分成回文串 Partitioning by Palindromes 题面翻译 回文子串(palind) 问题描述: 当一个字符串正序和反序是完全相同时,我们称之为“回文串”。例如“racecar”就是一个回文串,而“fastcar”就不是。现在给一个字符串s,把它分…

DependencyProperty.Register:wpf 向别的xaml传递参数

一.使用背景:在A.xaml中嵌入B.xaml,并且向B.xaml传递参数。 函数介绍: public static DependencyProperty Register(string name, Type propertyType, Type ownerType );name(string): 依赖属性的名称。在…

JavaFx学习问题3---Jar包路径问题 (疑难杂症)

文章目录 前置提要:解决方法:调试JAR包后续补充: 前置提要: 我做了的JavaFx程序中,需要通过一个文件夹的相对路径,获取文件夹下所有音频文件的路径,把这些路径字符串放到一个List集合里,然后用Media让它播放声音。问题…

单链表(数据结构与算法)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿&#x1…

半导体工艺控制设备1

半导体工艺控制设备对芯片良率至关重要,随着制程微缩需求倍增。工艺节点每缩减一代,工艺中产生的致命缺陷数量会增加 50%,因此每一道工序的良品率都要保持在非常高的水平才能保证最终的良品率。当工序超过 500 道时,只有保证每一道…

YOLOv5 分类模型 OpenCV和PyTorch两者实现预处理的差异

YOLOv5 分类模型 OpenCV和PyTorch两者实现预处理的差异 flyfish PyTorch封装了PIL库 简单对比下两者的使用方法 import cv2 from PIL import Image import numpy as npfull_path_file_name"/media/a//ILSVRC2012_val_00001244.JPEG"#OpenCV读取图像默认是BGR顺序 …

Power Apps-下拉列表控件

插入一个下拉列表控件 设置值的两种方式 1.通过属性items写数组设置 2.通过连接数据表,先在右侧操作面板中选择项目中的数据表 再从Value中选择其中一列,下拉就可以选择该列全部行的值 但是这样会导致有很多重复的字段,所以可以在items属性里…

聚类系列(一)——什么是聚类?

目前在做聚类方面的科研工作, 看了很多相关的论文, 也做了一些工作, 于是想出个聚类系列记录一下, 主要包括聚类的概念和相关定义、现有常用聚类算法、聚类相似性度量指标、聚类评价指标、 聚类的应用场景以及共享一些聚类的开源代码 下面正式进入该系列的第一个部分&#xff…