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》