虚幻引擎------蓝图

3

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-12-8 07:31:27 | 显示全部楼层
一、什么是蓝图?


  • 蓝图(BluePrint) 是Epic Games 针对虚幻4引擎开发的可视化脚本语言。
  • “蓝图”一词也用于指代使用蓝图创建的游戏对象。
<hr/>二、蓝图的类型

1.关卡蓝图:

  • 是一种特殊的类型的蓝图,它用于定义关卡中的特定事件和操作。关卡蓝图中所构建的蓝图脚本只在本关卡中有效。
  • 关卡蓝图可以用于与蓝图Actor类互动,以及管理某些系统,如过场动画和关卡流送等。
2.蓝图类

  • 类是对特定类型对象使用的数据和行为的定义。蓝图类可以基础C++类或另一个蓝图类。
  • 蓝图类用于为游戏创建互动对象,并可以在任意关卡中重复使用。
三、创建蓝图类



1.在创建新蓝图类时,必须定义父类。父类的所有变量、方法和操作都将成为新类的一部分,新类成为子类,这个概念叫继承。(本人理解:可以看作是父亲和儿子的关系,父亲有的功能和变量,儿子都会有,反过来,儿子有的新功能,父亲却不一定有)

  • Object:虚幻引擎中对象的父类或基类,所有的其他类都是Object类的子类。
  • Actor:可以在关卡中放置或产生的对象所使用的基类。
  • Actor Component:组件中的基类,为Actor类添加功能。这些组件定义可添加到Actor的可复用行为。
因此,每个Actor都是Object的子类,但并非所有的Object都是Actor。例如,Acror Component是Object,但不是Actor。
2.虚幻引擎为玩家提供了很多父类供我们选择,蓝图中的命名往往是这样的:BP_xxx




注:关卡中的某些Actor可能不是蓝图,但是我们想要将其转换成蓝图,就可以按照上图中的操作来实现。
四、蓝图编辑器界面



1.工具栏面板


2.组件面板


3.我的蓝图


4.细节面板


5.视口


6.事件图表:主要做蓝图开发


7.BeginPlay事件


8.Tick 事件


五、放置节点---进行开发

1.快捷菜单


2.搜索栏


3.控制板


4.情景关联


5.Event Graph的其它操作


  1)添加注释:框选内容,按键盘c,还可以更改注释框的颜色。


  2)节点单选和多选:很简单
  3)节点删除:选中节点,按Delete
  4)连线和断开:Alt+连线 即可断开连线
  5)窗口缩放:滑动滚轮
六、案例

案例一、自动开启的门



1.构建Actor类












2.旋转

  • SetRelativeRotation(设置相对旋转):设置组件相对于父组件的位置
  • SetActorRatation:让actor及其内部的所有组件都旋转
  • SetWorldRotation:设置世界坐标系下的旋转(世界坐标不会被改变)
案例二、锁住的门



1.创建变量



创建变量

2.变量的数据类型



变量的数据类型

3.变量的细节面板



变量的细节面板

注:实例可编辑实际上就是变量右边的小眼睛,点开小眼睛,就可以变成公有变量,并在关卡中进行修改
3.Getter和Setter



Getter和Setter

4.节点、引脚和引线



节点、引脚



引线

5.执行流程控制---顺序、分支、循环



执行流程控制



序列节点



分支节点



实例:锁住的门

注:导入第三人称资源包,并想让当前的关卡具有第三人称的基本功能,操作:Settings-World Setting-Game Mode-GameMode Override-ThirdPersonGameMode,此时,这个关卡就具有第三人称的功能了。



添加第三人称包



添加第三人称的游戏模式,具有其第三人称模板的功能



Switch On Int节点 相当于 C++中的switch语句



Switch On String节点



For Loop节点 == 循环

案例三 、红色的门



1.构造脚本函数



构造脚本函数



构造脚本函数:示例



示例

注:Set Material:此节点中的Element index节点,表示当场景中有多个Mesh时,可以控制要更改的Mesh的索引
四、场景中的道具---难度增加


1.算数运算符



算数运算符

注:其逻辑相当于 Score = Score + 50
2.关系运算符



关系运算符

3.逻辑运算符



逻辑运算符

4.数学表达式节点



数学表达式节点



数学表达式

注:数学表达式的节点运行性能较低,如果你的数学表达式比较复杂,在实际的项目中不建议使用此节点
5.数学表达式示例



数学表达式示例

案例四、实现场景中金币上下浮动并旋转




金币上下浮动

注:使得金币旋转,可以先看看组件中的RotatingMovement,这样就可以使金币自动旋转了。
五、Actor  事件响应



碰撞事件

注:若一个物体在触碰另一个物体时,没有发生触碰事件,此时需要将Mesh的细节面板,Collision-Collision Presets处的BlockAllDynamic改成OverlapAllDynamic即可。
案例五、收集道具




收集道具

1.枚举类型



枚举类型

2.枚举:创建变量



枚举:创建变量

2.枚举与Switch On



枚举与Switch On

七、游戏模式




游戏模式



指定游戏模式的两种方式


注:继承ThirdPersonGameMode作为父类,继续实现游戏的模式。
八、数据结构




数据结构类型

1.数组



数组

2.数组:主要节点



数组:主要节点

3.数组遍历:For Each Loop



数组遍历:For Each Loop

4.数组遍历的示例



数组遍历示例

5.集合Set



Set

6.字典Map



Map

九、函数

1.函数



函数



函数的输入和输出

2.函数的局部变量



局部变量

3.函数:目标(Target)参数



目标(Target)参数

1.在Game Mode中创建一个集合




十、关卡蓝图

案例六、随机生成道具









1.生成随机数


案例七、集齐道具解锁







十一、总结(一)



十二、蓝图进阶




课程内容

1.GamePlay Framework框架




结构关系



游戏模式



指定游戏模式



游戏状态



玩家控制器



玩家状态



Pawn



角色



角色运动



载具



HUD



游戏实例

2.Actor组件




Actor组件



蓝图Actor组件


3.蓝图通信




蓝图通信

1.蓝图通信的类型



蓝图通信的类型

案例七、开关+灯




DEMO

1.直接蓝图通信



直接蓝图通信



直接蓝图通信的目标



直接蓝图通信的目标



直接蓝图通信的目标



在关卡蓝图中使用直接通信



例子

4.类型转换



类型转换



为什么要进行类型转换

5.自定义事件




自定义事件



自定义事件:委托

案例八、对关卡中的多种对象进行交互




对关卡中的多种对象进行交互

1.蓝图接口




蓝图接口



蓝图接口:创建函数



蓝图接口:添加到蓝图



蓝图接口:实现函数



蓝图接口:工具函数

2.玩家输入




输入映射



操作映射



轴映射

3.Trace类型




Trace类型



命中结果结构体



命中结果结构体:示例



Line Trace



Multi Line



Line Trace by Channel



Shape Traces



调试

案例九、电源总开关




电源总开关

1.事件调度器




事件调度器

2.绑定事件节点




绑定事件节点

案例十、使用TimeLine制作动画




TimeLine案例

1.时间轴




时间轴



时间轴与变量

2.Lerp节点




Lerp节点



Lerp节点示例



插值到



插值到:示例

3.动态材质示例




材质参数



使用动态材质实例

十三、结构体




结构体



结构体:示例



结构体:Break and Make



拆分结构体引脚



数据表

十四、蓝图调试

1.蓝图调试F9:断点




断点



逻辑可视化



观察变量的值



蓝图调试器窗口

十五、蓝图函数库




蓝图函数库

十六、蓝图宏







1.Delay




Delay

2.定时器




定时器

3.可再次触发延迟


回复

举报 使用道具

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表