游戏逻辑编程

基本游戏性元素、Actor 和 对象 的解释。

Windows
MacOS
Linux

此文档将大概讲述引擎的核心功能,介绍一些核心架构概念,助您了解基本代码。

UObjects 和 Actors

Actors 是由 AActor 类派生而来的类实例;能被放入游戏世界场景的所有游戏性对象的基础类。对象 是继承自 UObject 类的类实例;虚幻引擎中所有对象的基础类,包括 Actor。因此,实际上虚幻引擎中所有的实例均为对象;然而,术语 Actors 通常用于指代在层级中继承自 AActor 的类实例,而术语"对象"用于指代非继承自 AActor 类的类实例。您创建的类多数均在其层级中的某个点继承自 AActor

总体而言,Actor 可被看做整体物体或实体,而对象则为更细节化的部件。Actor 经常使用作为细节化对象的 组件 ,对其功能的特定方面进行定义,或为属性合集保存数值。用汽车作为例子。汽车作为整体是一个 Actor,而汽车的部件(如轮子和车门)则都是该 Actor 的组件。

游戏性框架类

基本的Gameplay类包括用于表示玩家、盟友和敌人的功能,以及通过玩家输入或AI逻辑控制这些化身的功能。还包括为玩家创建 抬头显示和摄像机的类。总之,Gameplay类(如**游戏模式游戏状态玩家状态**)可用于设置游戏规则,并追踪游戏和玩家的进展情况。

这些类创建所有类型的Actor,它们可以放置在关卡中,也可以在在需要时生成。

在世界场景中表示玩家、好友和敌人

pawn_lander.png

Pawn

Pawn 是可作为世界场景中"代理"的Actor。Pawn可被控制器所有,且可将其设置为易于接受输入,用于执行各种各样类似于玩家的任务。请注意,Pawn不被认定为具有人的特性。

角色(Character)

角色 是类人式的Pawn。默认情况下,它带有一个用于碰撞的胶囊组件和一个角色移动组件。它可以执行类似人类的基本动作,可以流畅地复制网络上的动作,还具有一些与动画相关的功能。

使用玩家输入或AI逻辑控制Pawn

controller_lander.png

控制器(Controller)

控制器 是负责定向Pawn的Actor。它们通常有两种风格:AI控制器和玩家控制器。一个控制器可以"拥有"一个Pawn来控制它。

玩家控制器

PlayerController(玩家控制器) 是Pawn和控制Pawn的人类玩家之间的界面。玩家控制器基本上代表人类玩家的意愿。

AI控制器

AI控制器和听起来一样;可以控制Pawn的模拟"意愿"。

向玩家显示信息

camera_lander.png

HUD

HUD 是指"抬头显视"或二维屏幕显示,在许多游戏中较为常用。例如显示血条、弹药指示器、枪准星等。每个玩家控制器通常都配有其中一种显示。

摄像机(Camera)

玩家摄像机管理器是玩家的"眼球",负责管理它的行为。通常情况下,每个玩家控制器也有一个此类型的摄像机。请参见摄像机工作流程 页面,了解更多信息。

设置并追踪游戏的规则

hud_lander.png

游戏模式

"游戏"的概念分为两类。Game Mode 和 Game State 是游戏的定义,包括游戏规则和获胜条件等内容。它仅存在于服务器上。它通常不应有太多在游戏过程中会发生变化的数据,也绝对不应有客户端需要了解的临时数据。

游戏状态

GameState 包含游戏的状态,其中可以包括联网玩家列表、得分、棋类游戏中棋子的位置,或者在开放世界场景中完成的任务列表。游戏状态存在于服务器和所有客户端上,可以自由复制以保持所有机器处于最新状态。

玩家状态

玩家状态 是游戏玩家的状态,例如人类玩家或模拟玩家的机器人。作为游戏的一部分而存在的非玩家AI将不会拥有玩家状态。在玩家状态中适当的示例数据包括玩家姓名或得分、比赛中MOBA等的等级,或玩家当前是否在CTF游戏中携带旗帜。所有玩家的玩家状态存在于所有机器上(与玩家控制器不同),并且可以自由复制以保持同步。

框架类关系

此流程图说明了这些Gameplay类是如何相互关联的。游戏由游戏模式和游戏状态组成。加入游戏的人类玩家与玩家控制器相关联。 这些玩家控制器允许玩家在游戏中拥有Pawn,这样他们就可以在关卡中拥有物理代表。玩家控制器还向玩家提供输入控制、抬头显示(HUD), 以及用于处理摄像机视图的玩家摄像机管理器。

GameFramework.png

有关Gameplay框架类的更多信息,请参阅Gameplay框架

想要在 UE4 中开始编程的道路,还可以去我们 编程快速入门 页面和其他页面 C++编程教程 看看。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback