# Unreal术语表
此文为Unreal Engine 4 Terminology (opens new window)的原创翻译,本文内容版权归原文所有,仅供学习,如需转载望注本文地址,翻译不易,谢谢理解。
这个页面是用来描述UE4中常用的术语。比如,如果你发现自己问的问题会像"Actor是什么","Component是什么","Pawn是什么",本文将会重点讲解这类问题,一旦你理解了它们,你也可以查看链接来了解文档中关于它们更多的东西。
# Projects
一个Project是独立的单元,它包含构建一个游戏的所有内容和代码,相应地它在你的硬盘上也有很多目录,比如,Content Browser中的层级树结构和你硬盘上项目目录是一样的。尽管一个项目通常和.uproject后缀的文件关联在一块,但它们是相互依存的,.uproject是用来创建,打开或保存一个项目所有相关的文件的引用文件,你可以创建任意不同的项目,用于同时维护和开发,引擎和编辑器可以轻松地在这些项目中切换,这让你可以同时工作在多个项目上。
# UGameInstance
运行游戏实例的高层管理器,在游戏创建时生成,知道游戏实例被关闭它才会被摧毁,如果是作为Standalone模式运行,该实例将只有一个,如果是在PIE(play in editor)模式下运行,每个PIE实例会有一个。
# Objects
UE4中的基础构建块被称为Objects,它包含很多重要的后台功能,用以处理游戏资产,UE4中任何的东西都继承自Object,在C++中,UObject是所有Objects的基类,它完成引擎的一系列特性,比如垃圾回收,用以支持将变量暴露给Unreal编辑器的元信息(UProperty),加载和保存的序列化。
UObject是UE4所有对象的基类,通过UClass来定义一个对象的类型,它提供了创建和使用对象的函数,可在子类中重写虚函数。
# Classes
一个类定义了UE游戏创作中一个特定Actor或Object的行为和属性,类是有层级的,意味着一个类从它的父类(或者该类的子类)继承信息,然后再将信息传递给它的子类,类可以在C++代码或蓝图中创建。
# Actors
一个Actor是任何可被放置到关卡中的object,Actors是一个通用类,它支持3D相关转变,比如位移,旋转或缩放。Actor可以通过gameplay代码(C++或蓝图)用来创建(生成)或销毁,在C++中,AActor是所有Actors的基类。
有很多类型的Actors,比如:StaticMeshActor, CameraActor, and PlayerStartActor。
# Components
一个Component是可以被添加到一个Actor上的功能组件,它自己不能独立存在,但是当被添加到Actor上时,这个Actor可以获取和使用Component提供的功能。比如,一个Spot Light组件可以让一个Actor像点光源那样发光,一个Rotating Movement的组件让你Actor旋转,一个Audio组件让你的Actor有能力发出响声。
# Pawns
Pawns是Actor的一个子类,作为游戏中player或AI实体的物理代表,比如游戏中的人物角色,Pawns可以被player或者游戏的AI(Non-Player-Character,NPC)控制。
当一个Pawn被人类或AI玩家控制,我们称它被Possessed,相反地它被称为Unpossessed。
# Characters
一个Character是一个Pawn Actor的子类,被当成player角色使用,这个角色子类包含碰撞设置,人形生物的移动输入绑定,被玩家控制移动的额外代码。
# PlayerController
PlayerController类被用来处理用户的输入然后和游戏交互,每个游戏至少都有一个PlayerController,在游戏中一个PlayerController常常拥有一个Pawn或Character作为游戏中player的代理。
PlayerController在多人游戏中是主要网络交互点,在多人玩时,因为需要调用和每个player相关的网络函数,服务器对每个player都有一个PlayerController实例,每个客户端只有和自己对应的PlayerController,然后使用它和服务器交互。
# AIController
就像PlayerController拥有一个Pawn作为player在游戏中的代理,AIController也拥有Pawn来代表游戏中的NPC。默认地,Pawns和Characters都会被AIController拥有除非它被PlayerController拥有。
# Brushes
一个Brush是用来描述关卡中几何体(BSP)的3D体积的Actor,作为代表性的就是为了gameplay的测试你使用BSP Brushes来设计和构建你的关卡。
Volumes从其他方面来讲有几个种不同的效果,Blocking Volumes是不可见的,且用来阻止Actors通过,Pain Causing Volumes用来对任何碰到它的Actor造成伤害,Trigger Volumes用来当Actor进入它时触发某个事件。
# Levels
一个Level是用户定义的一块区域,通过放置,变换和编辑内部Actor所拥有的属性来创建,浏览和改变关卡,在Unreal编辑器中,每个关卡被保存为一个.umap文件,这就是为什么它们有时被作为Maps提及。
# World
一个World包含一系列被加载的关卡,它处理关卡的流程然后生成动态的Actor。和World的直接交互(并不是Levels,Maps)是不必要的,但它确实能在游戏结构上帮助你。
World是代表一个地图或沙盒的顶层对象,Actors和Components会存在这个对象里然后被渲染。
一个World可以是一个单独可持久化的关卡,它带有一些可选的流送关卡,这些流送关卡可通过Level Streaming Volume或蓝图加载卸载。或者它是通过World Composition把一系列关卡组织起来的集合。
在一个单独的游戏中,通常只存在一个单独的World,除非在目标和当前世界都存在的无缝过渡区域。在编辑器中存在很多世界:正在被编辑的关卡,每一个PIE实例,每个有交互渲染视口的编辑器工具等其他工具。
UWorld代表了游戏世界,不仅仅是关卡还有其他所有active状态的元素,它包含这些元素的引用,就像player controller,game mode等等,它就像一个到游戏世界的集线器,所有actor都可通过这个集线器到达游戏世界。
# GameModes
GameMode类是负责游戏规则的,规则可能包含players如何加入游戏,游戏是否可被暂停,关卡切换,关卡赢的条件。
你可以在Project Settings里面设置默认的GameMode,但可以在每个关卡基础上重写,先不讨论如何实现GameMode,通常在每个关卡中只有一个GameMode,在多人游戏中,GameMode只存在于服务器,然后被复制到每个客户端上。
# GameStates
GameState包含你想复制到每个客户端的信息,或者它仅仅是每个人连接时游戏的状态。它经常包含游戏分数,一个比赛是否开始,基于players的人数要生成多少AI,或者其他游戏具体信息。
对于多人游戏来说,在每个客户端上有一个GameState的实例,但只有服务器的实例是权威的,其他客户端都从服务器上更新。
# PlayerStates
PlayerState是游戏参与者的状态,比如玩家player或者是模拟玩家的机器,非玩家AI作为游戏世界的一部分不会有PlayerState。PlayerState中的数据包含玩家名字,分数,当前关卡,健康值,或者当前是否拔旗了。对于多人游戏来说,所有玩家的PlayerStates会存在于所有客户端,然后会保持同步服务器上的数据。