1 - 使用蓝图编程
光速过一遍蓝图编程,本文将光速过一遍如下内容:
- 蓝图中的变量;
- 使用事件(Events)和动作(Actions)定义蓝图的行为;
- 常用运算符;
- 使用宏与函数辅助蓝图编程;
- 注释;
变量
创建变量
在蓝图中创建一个变量的方法是,在左下角面板的变量条目中,点击加号新建一个变量:
变量基本类型
可创建的变量类型有很多,这里看看常见的基本类型,见下列表格:
类型名 | 含义 |
---|---|
Boolean,布尔 | 布尔变量 |
Byte,字节 | 8位整数 |
Integer,整数 | 32位整数 |
Integer64 | 64位整数 |
Float,浮点 | 32位浮点数,7位小数精度 |
Double | 64位浮点数,16位小数精度 |
Name,命名 | 作为对象标识符的一段文本 |
String,字符串 | 字符串 |
Text,文本 | 用于本地化文本,方便实现不同语言的翻译 |
Vector,向量 | 三维向量,包含xyz三个分量 |
Rotator,旋转体 | 三维旋转,包含X(滚动),Y(俯仰)和Z(偏航) |
Transform,变换 | 可以存储对象的位置,旋转和缩放 |
变量的属性
选中一个变量后,可在细节面板处修改该变量的属性:
其中,常用的属性如下:
- 变量命名(Variable Name):设置变量的名称;
- 变量类型(Variable Type):设置变量的类型;
- 描述(Tooltip):鼠标指向该变量时,出现的描述性内容;
- 可编辑实例(Instance Editable):勾选此项后,可在关卡中蓝图实例里修改该变量。不勾选的话所有实例共享相同初始值。
- 蓝图只读(Blueprint Read Only):勾选此项,变量将不能被蓝图修改。
- 生成时公开(Expose on Spawn):勾选此项,变量可以在生成蓝图时修改。
- 私有(Private):该蓝图的子蓝图中不能修改该变量;
- 向过场动画公开(Expose to Cinematics):勾选此项,能让Sequencer修改此变量;
事件和动作
通过事件,Actor可以接收到游戏的状态;通过使用动作,可以定义Actor怎么响应事件。
事件
若要向蓝图中添加事件,可以在事件图表中选择要添加的事件。如果需要自定义事件,可以在事件图表中右键,选择”添加自定义事件(Add Custom Event)“。
下图是一个自定义事件及其细节面板:
引擎内置的事件有下列几种:
- 碰撞事件(Collision Events):两个Actor发生碰撞或重叠时触发;
- 输入事件(Input Events):由输入设备(如鼠键,手柄等)输入时触发;
- Begin Play事件:游戏开始时,在关卡编辑器中放置的Actor立即触发,运行时的动态Actor在生成后触发;
- End Play事件:Actor在游戏中将要被移除时触发;
- Tick事件:游戏中每一帧触发;
- …
动作
接下来就能用一些动作定义事件了,例如这里在Begin Play事件触发时,给变量Bot Name设置为Archon,然后将其输出:
这里主要使用了变量Bot Name的Getter和Setter,以及一个Print String函数。
运算符
算术运算符
可用于算术运算符(加减乘除)创建数学表达式,左边是输入,右边是输出。
关系运算符
关系运算符将比较两个值间的关系,并返回布尔值结果。
逻辑运算符
逻辑运算符负责对两个布尔值进行运算:
宏与函数
重复的操作可以被宏或函数封装。
宏
可在“我的蓝图”,宏处创建一个宏。创建好后会自动跳出该宏的定义图表界面,然后就能定义宏了。
可以在细节面板处编辑宏的输入和输出等属性:
下例为游戏中的下一波敌人设置一些变量,接收当前波次为输入,将敌人数量设置为当前波次的五倍:
写好宏后,就能在事件图表中使用它了:
函数
和宏不一样,在蓝图A中创建的函数可以在蓝图B中调用。要想创建函数,需要到“我的蓝图”中创建它。创建好函数后,会自动跳出它的定义面板,并且也能在“细节”面板中编辑相关属性。
此外,在创建函数时可以选择它是否为纯函数。纯函数没有执行引脚(即名字下面的两个三角),不应该修改蓝图变量,因此大多数作为Getter。
下例根据波数和剩余时间计算奖励积分:
可以在事件图表中使用它:
宏、函数和事件的区别如下:
宏 | 函数 | 事件 | |
---|---|---|---|
输入参数 | √ | √ | √ |
输出参数 | √ | √ | √ |
多个执行路径(I/O) | √ | x | x |
可由另一个蓝图调用 | x | √ | √ |
潜在动作(Latent Action,如Delay) | √ | x | √ |
时间线节点 | x | x | √ |
注释
选中需要注释的节点,然后按C即可:
参考资料
- 中文翻译:《UE5蓝图可视化脚本游戏开发完全学习教程》
- 英文原版:《Blueprints Visual Scripting for Unreal Engine 5 Third Edition》