2 - 游戏框架类
光速过一遍蓝图编程,本文将光速过一遍如下内容:
- 蓝图类的构造脚本;
- Actor类和其他游戏框架类;
构造脚本
蓝图类中还有一个叫做 构造脚本 Construction Script 的面板,它相当于类的构造函数。下例将在蓝图类实例创建时给它绑定一个静态网格体:
游戏框架类
虚幻引擎中有一些用于游戏开发的基本类,这些类是游戏框架的一部分,其中最主要的类就是Actor类。
Actor类
Actor类包含了一个对象在关卡中存在所需要的所有功能,是所有在关卡中可放置对象的父类。
引用Actor
在使用对象或Actor类时,需要使用 对象引用(Object Reference)类型的变量,蓝图中的引用允许不同的对象相互通信。
下例展示了如何使用引用Actor,该Actor被击中时它的火焰特效会显示出来:
生成和摧毁Actor
要想动态生成Actor,可以使用Spawn Actor from Class
函数。该函数接收要生成Actor的Class,Spawn Transform 和 碰撞处理重写等作为输入,生成Actor的实例作为输出。
要想从关卡中移除一个Actor实例,可以使用Destroy Actor
函数。该函数接收要移除的Actor实例。
下例展示了Actor的生成和摧毁,按1键生成火焰特效,按2键摧毁该火焰特效:
Pawn类
Pawn是Actor的子类,是一个可以在游戏中通过Controller类操控的Actor。其中Controller可以是玩家操控的Player Controller,也可以是AI操控的AI Controller。
上图是Pawn类的细节面板,可以发现它由Controller类拥有,可使用Controller类的属性,也能设置Controller类如何占用它。
Character类
Character类是Pawn类的子类,它能够走、跑、跳跃、游泳、飞行等,是被玩家操控的类。基于Character类的蓝图类将会得到如下组件:
- 胶囊体组件:用于碰撞测试;
- 箭头组件:显示该Character的当前方向;
- 网格体:是骨骼网格体组件,可直观地展示Character。该组件的动画由一个动画蓝图所控制。
- 角色移动:该组件用于定义各种类型的角色运动,例如走跑跳等。
PlayerController类
Controller类有两个子类:PlayerController类和AIController类。前者供人类玩家控制Pawn,后者供AI控制Pawn。
可用Possess
函数来拥有一个Pawn。下例展示如何在游戏中改变玩家控制的Pawn,按下1控制Character1,按下2控制Character2:
GameModeBase类
GameModeBase类是GameMode类的父类。GameMode类用于定义游戏规则,并规定默认的游戏框架类:
要指定项目的默认游戏模式类,需要在项目设置-地图和模式中修改:
此外,每个关卡也能拥有各自的游戏模式类,并且 关卡拥有的游戏模式类会覆盖项目的默认游戏模式类。要想设置关卡自己的游戏模式类重载,需要修改世界场景测试:
GameInstance类
游戏实例类虽然不常用,但还是需要了解。该类的实例是在游戏开始时创建的,所以该类和它的数据在关卡间保持不变,只有在游戏结束时才会被摧毁。
每次加载关卡时,关卡中所有的Actor和其他对象都会被销毁并重新生成,如果需要在关卡转换中保留一些变量,需要用到游戏实例类。
同样在项目设置-地图和模式中修改项目的默认游戏实例类:
参考资料
- 中文翻译:《UE5蓝图可视化脚本游戏开发完全学习教程》
- 英文原版:《Blueprints Visual Scripting for Unreal Engine 5 Third Edition》