UE蓝图基础入门
UE蓝图基础入门
UE蓝图基础入门
UE的脚本编程简介
在UE中,可以通过脚本定义游戏中的各种规则、事件和条件,实现复杂的游戏机制、物理模拟和AI行为,让游戏世界更加逼真和生动。
UE中常见的脚本编程方式主要有两种:
C++:是UE5的核心编程语言,它提供了对引擎的底层访问和最高级别的性能优化。使用C++,开发者可以创建自定义的系统、工具、插件,以及扩展或修改引擎的现有功能。C++编程需要一定的编程基础,包括了解数据结构、算法、内存管理等概念。在UE中使用C++编程一般使用的是微软的Visual Studio进行开发。
蓝图:是UE5提供的一种可视化脚本编程工具,它使开发者能够通过直观的节点和连接线来创建游戏逻辑,而无需编写大量的C++代码。蓝图特别适合那些对编程不太熟悉的设计师和艺术家使用,同时也为高级开发者提供了一种快速原型设计和迭代的方式。在UE的引擎中,已经内置了蓝图编辑器直接通过蓝图进行开发。
蓝图的基本使用
在UE中蓝图有多种类型:
关卡蓝图:关卡蓝图是UE5中用于定义整个关卡逻辑和事件的蓝图,它允许开发者通过图形化界面来管理和触发关卡内的各种行为和事件。
蓝图类:蓝图类是UE5中用于创建自定义Actor类型的蓝图资源,它允许开发者通过继承现有游戏性类并添加自定义功能来扩展游戏世界中的对象。
数据蓝图:数据蓝图主要关注数据的存储和操作,它提供了用于创建和编辑游戏数据结构的可视化界面,方便开发者管理和处理游戏数据。
蓝图接口:蓝图接口在UE5中用于定义Actor之间的通信规范,它允许开发者创建标准化的接口,使得不同蓝图类之间能够通过一致的接口进行交互。
蓝图宏库:蓝图宏库是UE5中用于创建可重用的蓝图节点集合的资源,它允许开发者将常用的逻辑片段封装成宏,并在其他蓝图中重复使用,提高开发效率。
蓝图创建方式:
关卡蓝图,在关卡被创建的时候,自动创建好了,并且会将蓝图的信息存储在关卡文件中。直接打开蓝图即可。
蓝图类,需要手动创建,并且会在资产中会生成一个蓝图问题
方式1:直接在场景中actor的细节创建蓝图类。这种方式创建的蓝图类主要作于当前actor
方式2:在资产管理工具栏中,创建蓝图类。这种方式创建的蓝图类是一个空的蓝图类,可以在其中添加模型和效果
蓝图的基本操作:
打开蓝图编辑器之后,左边工具栏中有多种蓝图属性:
- 事件图表(EventGraph)可以设置当前关卡或者actor的各种事件业务逻辑
- Event BeginPlay:在当前关卡或者actor在初始化的时候触发的事件
- Event Tick:循环执行特定的操作或函数,其执行频率与游戏的帧率相关。例如,如果游戏的帧率是60fps,那么Event Tick节点每秒钟将会执行60次。
第一个蓝图函数:
PrintText:输出文字到页面
PrintText通常用于在屏幕上显示文本信息
PrintString则更侧重于将字符串信息输出到日志中,对于开发者在调试过程中追踪程序运行的状态和错误非常有用蓝图实现方式
> 可以通过长按alt,然后点击连接线切断连接
>
> 双击可以在连线中间添加一个点
* 蓝图的工作流是有不同的节点构成,通过连接将不同的节点联系起来,常见的节点如下:
* 事件节点:这些节点在特定条件或动作发生时触发,例如游戏对象的碰撞、玩家输入等,一般是**红色**
* 函数节点:当这些节点被激活时,它们会执行与之关联的函数或触发事件。一般是**蓝色**
* 自定义节点:通常表示函数的定义。这些节点用于创建自定义的函数或方法,以在蓝图中重复使用。一般是**紫色**
* 变量节点:这些节点通常用于获取某些值或设置某些值的操作。根据不同的变量类型有不同的颜色
- 蓝图注释
- 在节点很多时候,通过注释对多个节点的功能进行说明
- 选中多个节点之后,点击鼠标右键,选中创建注释选项,或者直接使用快捷键C创建注释
变量
变量的概念和使用
什么是变量?
变量就是用于存储数据的容器,本质上就是一块内存空间。比如,人的速度,名称,年龄都可以通过变量存储起来为什么要使用变量?
因为在游戏运行过程中,很多数据是发生变化的,比如人的速度、在场景中的坐标。如果用变量来存储数据,那么在操作的时候会很方便。变量如何使用
首先,需要定义变量。在蓝图视图中的变量栏中,点击新增变量按键创建变量的时候,需要设置变量的名称和类型
一般变量的命名使用驼峰命名法(单词首字母大写)和 蛇形命名法(单词之间使用_分割)
变量常见的类型有字符串、数值、布尔、向量等等。将定义好的变量拖入到蓝图视图中,分为设置变量和获取变量两个操作
长按ctrl拖入是获取变量操作
长按alt拖入是设置变量操作变量细节属性
设置选中可编辑实例和生成时公开,在当前蓝图被拖入到场景中构建actor得时候,使得当前属性可以被选中配置
* 默认值中可以设变量初始值得大小
数值类型
数值类型分类
字节(Byte): 0-255之间的整数值
整数(Integer): -2147483648到2147483647之间的
整数64位整数(lnteger64):更高位数的整数
浮点(float):用于表示小数
数值的运算
两个整数变量,通过运算符节点进行相加。由于PrintString只能输出字符串,所以需要将Result结果转换字符串才可以
也可以让一个整数变量,和指定的值相加
点击添加引脚之后,可以让多个变量和常量进行相加
常见算术运算符主要有加(add)
- 减(Subtract)
- 乘(Multiply)
- 除(Divied)
/ - 去余
%
布尔类型
- 布尔类型(Boolean)的值只有true和false
- 比较运算符操作的结果都是布尔类型
- 常见的比较运算符如下:
- 大于(Greater)
- 小于(Less)
< - 大于等于(Greater Equal)
=
- 小于等于(Less Equal)
<= 等于(Equal)
- 不等于(Not Equal)
!=
字符类型
常见的字符类型
命名(Name):轻量级字符串,经常被用于对象的命名。内部通过字符串池和哈希表进行存储,以加速查找和比较操作。Name不区分大小写,并且是只读的,这使其非常适合用于频繁进行名称比较的场景。
字符串(String):是一种动态可变的字符串类型。类似于C++标准库中的std::string,FString可以动态地添加、删除和修改字符。它提供了一系列的成员函数和操作符,用于字符串的拼接、比较、查找等操作。然而,由于它的可修改特性,FString在性能上可能不如其他类型高效,特别是在线程间共享时需要格外注意。
文本(Text):主要用于游戏中的文本显示,特别是在用户界面(UI)上,如果游戏中出现大段对话时,基本我们就使用Text,对于我们本地化非常有帮助。
字符串主要时通过
append
进行拼接
字符串的比较==
(Equal,Case Insensitive)不区分大小比较相同===
(Equal Exactly) 区分大小写比较相同!=
(Not Equal,Case Insensitive)不区分大小比较不相同!==
(Not Equal Exactly) 区分大小写比较不相同
向量类型
在UE中向量类型,是由三个数值组成,分别是X,Y,Z,主要用于表示位置、旋转、缩放等。
向量的运算
向量+向量:
v1+v2 =(v1.x+v2.x , v1.y+v2.y, v1.z+v2.z)向量小数:
vf =(v.xf, v.yf, v.z*f)通过修改向量,控制actor在场景中的位置
创建一个向量变量MyPos
通过
keyborad
或者
键
设置按键事件如果是actor蓝图,需要设置根对象的细节,将自动接收输入设置为玩家0
蓝图实现
Set World Transform这个函数是可以修改当前蓝图在场景中的位置,旋转,和缩放。