Actor与组件
Actor:所有的世界编辑器中的物体都是一个Actor,包含了位置、旋转、缩放的信息,一个Actor有且仅有一个SceneComponent来进行管理。
如果想要显示到界面上,需要有一个StaticMeshComponent(继承自SceneComponent),用来进行网格渲染。
一个Actor里面能放多个子元素,每个元素都是一个场景组件实例,例如Cube的Actor下面能放Cube,没有子Actor的概念。
场景组件实例是能在场景中存在的实例,也具有位置旋转缩放的信息,但是不能单独存在,要依附于Actor存在。
普通组件实例无法在场景中显示
在世界编辑器上把一个Actor放到另一个Actor下面叫做附加的绑定关系,而不是作为场景组件实例存在于另一个Actor中,在Actor的编辑器中不存在子Actor。
当我们需要创建多个同种类型的Actor,就需要用蓝图创建对应Actor的统一描述(相当于Unity的预制体),方便实例化。
材质
材质在UE中相当于一个可视化,节点式编程的Shader,可以直接附加到模型上,使用的是默认的参数
可以创建一个材质实例,父类是对应的材质,这样就能修改材质上的参数,材质实例通过调节参数实现同样材质的不同效果。
光照
- 静态光照,需要预先烘培计算,运行时静态物体上只有预先计算好的直接和间接光照,不参与实时运算,因此可移动的物体不会实时投射阴影到静态物体上
- 可移动光照,不需要预先计算,运行时实时计算,但是只能计算直接光照,不能计算间接光照
- 固定光照,既能对静态物体预先烘培,也能计算实时的直接光照。
蓝图
变量,函数定义,if,switch,for,while的使用,事件分发的使用,事件图表(开始函数,Update函数)
玩家输入
操作映射:按下或弹起时触发事件
轴映射:可以定义多个按键,每帧都会监听,按下和弹起不同的按键都对应了一个float值,通过这个值来执行对应的逻辑。
数组,结构体,枚举
注意:在工具集中寻找对应数据类型的模块
一个数组只能存放一种数据类型。用For Each Loop遍历,用Length来返回长度,Get(复制),Get(引用)可以给其他数组赋值。另外还有Inset,Contains,Remove Index等模块
结构体也是一种蓝图,只包含了变量类型,对其进行定义,这样就能在其他蓝图中声明一个结构体来操作。
枚举也是一种蓝图,是一种有意义符号的集合,在蓝图中使用,可以表示现在的状态。
集合与字典
集合一组数据的综合,可以使用交集,并集,差异,清除等基本功能,可以转换成数组。
字典是一种映射,可以访问Keys,Values,add模块,和代码中的字典用法一致
模块
Do N
用于反复执行一个逻辑,和循环不用,每次通过Enter阵脚只执行一遍,当这个函数执行了N遍之后无法通过Enter阵脚继续执行,除非通过Reset阵脚重置。
Do Once同理,只允许执行一次,可以通过Reset重置。 另外新增了一个刚开始是否允许执行的选项,如果勾选了close,则reset之后才能执行
Sequence(序列)
只有一个入口,有多个出口。每次通过入口执行代码时按顺序依次执行全部的的执行出口阵脚的模块。
Gate
入口阵脚:Enter,Open,Close,Toggle,Closed(bool)
出口阵脚:Exit
通过Enter执行Exit的代码,如果是Open的就执行,如果是Close不执行,如果是Toggle则会切换开关状态。
MutiGate
入口阵脚:入口,Start Index(int),IsRandom,Reset,Loop
出口阵脚:Out1,Out2…
有多个门的出口,和Do N类似,添加了循环和从特定Index开始的功能,添加了选取任意index的功能。
Delay
延时,过一段时间才会执行后面的逻辑(异步),只能在事件中调用,不能在函数中调用。
注意:如果该Delay模块正在执行时再次调用不会有任何反应,不会重置时间。
宏
宏可以用来定义代码块。
宏和函数不同,宏每次使用都会展开,函数始终是一个节点,宏代码体积大,性能好。
宏更为灵活,可以使用多个输入,输出。
宏如果定义了局部变量:这个局部变量随着宏调用位置的不同的从属不同,如果在函数中调用就是函数饿局部变量,如果是事件中调用就是类的成员变量。
生成Actor和Actor查找
模块:从类生成Actor
可以生成对应的Actor,这个物体会显示到世界编辑器上。
模块:获取类的所有Actor、获取有接口的所有Actor,获取有标签的所有Actor
返回对应类型Actor的数组
可以用For Each Loop来进行遍历