虚幻4蓝图快速入门(二)

蓝图用户指南

由于蓝图就是个可视化的脚本系统,那么一个程序语言中的基本概念也就都存在。下面我们简单来介绍下蓝图中的一些基本概念。

变量

概述

Variables(变量) 是存放一个值或引用世界中的一个Object或Actor的属性。这些用户界面 内部访问,或者通过设置使得可以在外部进行访问, 以便应用放置在关卡中的蓝图实例的设计人员可以修改它们的 值。

变量显示为圆角方框,方框内包含了变量的名称:

变量类型

您可以创建各种类型的变量,包括数据类型的变量(比如布尔型、整型及浮点型)及用于存放类似于Object、Actor及特定类的引用型变量。 您还可以创建每种变量类型的数组。每种变量类型都进行了颜色编码,以方便识别。

蓝图数组

和变量值一样,蓝图也可以在数组中存储数据。如果您不熟悉编程术语,您可以把数组想象成为存在于一个单元中的一组变量。

数组仅能存放一种类型的值。比如,布尔型数组仅可以存放布尔值。

数组变量包含一个3x3 的带颜色网格,表明它们是数组,不是正常的变量。在没有连接的数组中,其网格的中心是黑的。一旦连接后,整个网格将会可见,如下所示。

数组索引

同时需要注意的一点是,数组中的值的索引值是 从0开始的 ,这意味着第一个索引是 0 而不是1。

流程控制

概述

Flow Control (流程控制)使得能在蓝图中清楚地控制执行的流程。 此种控制可以多种形式进行,基于某些值为真的情况来选择图表的某个分支来执行,多次执行某个特定分支,以特定顺序执行多个分支,等等。 默认的流程控制操作包括了分支(if语句),循环(for和while语句),门,及序列。

开关节点

开关节点读取数据输入,并会基于该输入值来从匹配的(或可选的默认)执行输出中发送执行流程。 可用的开关有以下几种类型: Int (整型),String (字符串型), Name (名称型),以及 Enum (枚举型)。

一般而言,开关节点会根据其估算的数据类型拥有执行输入以及数据输入。 输出均为执行输出。 Enum 开关会自动从 Enum 属性中生成输出执行引脚,而 Int, String 及 Name 开关拥有可自定义的输出执行引脚。

程序中的switch关键字,但是它支持更多的类型。

标准流程控制节点

这些节点提供了一系列方法来控制执行的流程

Branch

在面对单个 True/False 判定的情况下,Branch(分支)节点是一种创建基于判断的流程的简单方式。 在执行后,分支节点会查找附加的布尔变量的输入值,并在合适的输出节点下方来输出执行脉冲值。其实就是if-else分支。

DoN

DoN节点将会 N 次触发执行脉冲。 在达到限制后,它将会停止所有的输出执行,直到脉冲被传入其 Reset (重置)输入。

例如,您可以启动车辆20次,然后在绑定到 Reset (重置)输入的加油事件被激活前,无法再次启动车辆。

DoOnce

DoOnce节点-正如名称所显示的-将会仅仅触发执行脉冲一次。 在之后,它将会停止所有的输出执行,直到脉冲被传入其 Reset (重置)输入。 该节点等同于DoN节点中 N = 1 的情况。

我们举例来说,您可以对一扇开启的门的节点网络设置DoOnce,这样这扇门将仅仅开启一次。 不过您可以绑定一个触发事件到Reset(重置)输入,这样会导致在触发器被激活时,门会再次打开。

FlipFlop

FlipFlop节点取入执行输出并在两个执行输出间切换。 其第一次被调用时,将会输出A。 第二次被调用时,将会输出B,然后再是A,然后又是B,循环往复。 该节点同时有布尔变量输出,使您可以追溯输出A何时被调用。

ForLoop

ForLoop节点的工作原理等同于标准的代码循环,将会在开始和结束之间的每个索引触发执行脉冲。就是C++中的for循环可视化版本。

ForLoopWithBreak

ForLoopWithBreak节点包含了能中断循环的输入引脚,除此之外,它运行的方式与ForLoop节点非常相似。

Gate

Gate(门)节点用来开启和关闭执行流。 简单来说,Enter输入取入执行脉冲,同时门的当前状态(开启或关闭)将会决定这些脉冲是否从Exit输出中传出。

MultiGate

MultiGate取入单个数据脉冲并将其传送到任意数量的潜在输出。 这个过程随机按顺序发生,可能会循环

Sequence

Sequence (序列)节点使得单个执行脉冲能按顺序触发一系列事件。 节点可能有任意数量的输出,所有的输出引脚都会在序列节点一获得输入时就被调用。 它们将总是按顺序被调用,但不会有任何延迟。 对一般用户来说,输出引脚看起来好像被同时触发了一样。

WhileLoop

只要特定值为 true ,则WhileLoop节点将会输出一个结果。 在循环的每个迭代中,它会查看其输入布尔值的当前状态。 一旦它读取到 false ,该循环中断。

函数

Functions(函数) 是属于特定 蓝图 的节点图表,该节点图表可以执行或者从 蓝图 中的另一个 图表中进行调用。函数具有一个单一的入口点,由和该函数具有相同名称的一个节点指定, 该节点包含了一个单一的执行输出引脚。当从另一个图表调用函数时,会激活该输出执行引脚, 促使执行连接网络。

访问修饰符

当创建函数时,您可以指定可以访问及不能访问这些函数的其他对象。这可以通过设置 Access Specifier(访问修饰符) 属性来完成,该属性可以在选中函数的 详细信息 面板中找到。跟C++中一样,有Public Protected Private三种类型。

纯函数和非纯函数

函数可以是 纯函数 也可以是 非纯函数 。主要的区别是纯函数不会以任何方式修改状态或者类的成员, 而非纯函数可以自由地修改状态。纯函数一般用于 getter 函数 或者仅输出一个数据值的操作符。

非纯函数必须通过在事件图表中将执行线连接到函数调用节点来显式地执行。 非纯函数通过使用以下这些方式之一进行指定:

  • 在代码中定义的函数的函数声明中指定 BlueprintCallable 关键字。
  • 将通过 蓝图编辑器 添加的函数的 Pure(纯函数) 复选框保留为未选中状态。

纯函数连接到数据引脚上,当需要依赖于纯函数的数据时,编译器会自动地执行这些函数。这意味着 对于每个连接到纯函数上的节点,都会调用一次纯函数 。纯函数通过使用以下这些方式之一进行指定:

  • 在代码中定义的函数的函数声明中指定 BlueprintPure 关键字。
  • 选中通过 蓝图编辑器 添加的函数的 Pure(纯函数) 复选框。

创建函数

在蓝图中创建函数

在 Graph(图表) 模式,从 My Blueprint(我的蓝图) 选卡下,点击New Function (新建函数)按钮。

在蓝图接口中创建函数

在 Blueprint Interface(蓝图接口) 中创建函数同在 Class Blueprint(类蓝图) 或 Level Blueprint(关卡蓝图) 中创建函数一样,但是实现是有很大差别的。

在 Graph(图表) 模式,从 My Blueprint(我的蓝图) 选卡下,点击New Function (新建函数)按钮。

编辑函数

一旦创建了函数,您就需要定义其功能。这个过程需要两步:

  • 创建必要的输入和输出参数
  • 在您的输入和输出之间创建节点网络来定义函数行为。

调用函数

一旦您创建并定义了您的函数后,就可以在您的事件图表中调用它。要想创建一个调用您的函数的节点:

  • 从 我的蓝图 选卡中拖拽您的函数到事件图表内的空白处
  • 在事件图表中右击,或者从适当的执行引脚或数据引脚拖拽鼠标来打开关联菜单。在关联菜单中搜索您的函数,然后选中它来添加函数调用节点。
  1. https://docs.unrealengine.com/latest/CHN/Engine/Blueprints/UserGuide/index.html
时间: 2024-10-12 17:58:23

虚幻4蓝图快速入门(二)的相关文章

虚幻4蓝图快速入门(一)

蓝图快速入门 序言 本文依据官方教程总结而来,只是带你对蓝图有一个快速的认识,如果想对蓝图有一个比较深入的了解,那么可以看官方的视频或者是做一些小项目练手,如果你有编程经验的话,上手还是很容易的. 蓝图快速入门 什么是蓝图 虚幻引擎中的蓝图可视化系统是一个完整的游戏脚本系统,其理念是使用基于节点的界面从虚幻编辑器中创建游戏可玩性元素,该系统非常灵活且非常强大,因为它为设计人员提供了一般仅供程序员使用的所有概念及工具.它是一种特殊类型的资源,为关卡设计师和游戏开发人员提供了一种在编辑器中快速创建及

虚幻4蓝图快速入门(四)

蓝图跟C++交互 概述 蓝图可以继承C++类,从而使得程序员可以在代码中创建新的游戏性类,而关卡设计人员可以使用蓝图来继承该类并对其进行修改. 有很多种修饰符可以改变C++类和蓝图系统间交互方式,其中某些修饰符会在本示例中突出介绍. 可以通过查看以下内容来快速了解: 虚幻引擎快速入门视频教程第五章,见引用[1] 官方文档 类设置 在类设置的第一部分中,使用C++类向导创建一个名称为LightSwitchBoth 的类. LightSwitchBoth类中的大部分代码设置都和 仅使用C++的Lig

虚幻4蓝图快速入门(三)

数学表达式节点 概述 要想创建一个数学表达式节点,请右击图表并从关联菜单中选择 Add Math Expression(添加数学表达式)... . 数学表达式节点就像一个合并的图表.它是一个独立的节点,您可以双击它来打开构成其功能的子图表. 最初,该名称/表达式是空的.任何时候,当您重命名该节点时,都将会解析新表达式并生成新的子图表. 变量 变量命名非常灵活,但是记住以下几点非常重要: 变量名称本身可以包含数字,但是不能以数字开头. 变量名称不能和隐藏的蓝图变量名称一样. 确保您正在使用正确的变

AS3多线程快速入门(二):图像处理[译]

原文链接:http://esdot.ca/site/2012/intro-to-as3-workers-part-2-image-processing 在<AS3多线程快速入门>系列教程的第一部分中,我们研究了AS3 Worker的基本原理,包括多种通信方式,还展示了一个简单例子:Hello World Worker. 在这篇文章里,我将更进一步,向你展示如何利用多线程做些有用的功能,比如图像处理!在这次例子中,我将一边给一个大位图应用锐化滤镜,一边让主UI线程持续保持在30fps的渲染帧率.

MySQL快速入门(二)

1 多表关联查询 从快速入门,我们已经学会了如何在一张表中读取数据,这是最基础简单的查询表中的数据,但是在实际中经常需要从多个表中读取数据. 本章我将会向大家介绍如何使用MySQL在多个表中查询数据. 想要从多个表中查找数据,就要用到JOIN关键字 JOIN 按照功能大致分为如下三类: 1.CROSS JOIN(交叉连接) 2.INNER JOIN(内连接或等值连接) 3.OUTER JOIN(外连接) 1.1 交叉连接 交叉连接的关键字:CROSS JOIN                  

SpringBoot快速入门(二)

SpringBoot集成MyBatis 属于数据访问层:MyBatis所有的包都是自己的,所以要导入自己的依赖 1.导入驱动和依赖 <!-- 这是自定义的包 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</ve

[.net 面向对象程序设计进阶] (5) Lamda表达式(二) 表达式树快速入门

[.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习表达式在程序设计中的优点:比如构造动态查询.动态构造表达式树完成未知对象属性访问,比反射的性能高出很多.我们可以说表达式树才是Lambda的精髓,是我们必须要熟练掌握并灵活运用的. 1.关于表达式树(Expression Tree) 表达式树以树形数据结构表示代码,其中每一个节点都是一种表达式,比如

[你必须知道的NOSQL系列]专题二:Redis快速入门

一.前言 在前一篇博文介绍了MongoDB基本操作,本来打算这篇博文继续介绍MongoDB的相关内容的,例如索引,主从备份等内容的,但是发现这些内容都可以通过官方文档都可以看到,并且都非常详细,所以这里就不想继续介绍了,需要用到的朋友到官方文档进行查阅:http://docs.mongodb.org/manual/tutorial/remove-indexes/.本专题将介绍另一个NoSQL——Redis的相关内容. 二.Redis介绍 关于Redis大家肯定多多少少都有所了解,Redis一般都

C语言快速入门教程(二)

C语言快速入门教程(二) C语言的基本语法 本节学习路线图: 引言: C语言,顾名思义就是一门语言,可以类比一下英语; 你要说出一个英语的句子需要:  单词  +  语法!  将单词按照一定的语法拼凑起来就成了一个英语句子了; C语言同样是这样,只不过单词可以理解为一些固定的知识点,而语法可以理解为算法(可以理解为解决问题的方法) 在这一节中我们就对固定知识点中的语言描述与数据存储进行解析! 1.C语言的基本元素 1.1  标识符 什么是标识符? 答:在C语言中,符号常量,变量,数组,函数等都需