《图解UE4渲染体系》Part 0 引擎基础

在介绍UE4渲染体系前,我们有必要来先看一下UE4是用什么样的方式来构建游戏场景数据的。
1 Object
在UE4中当我们说Object,通常是指代引擎代码中的UObject类,它是引擎里管理绝大部分类和对象的基石,这是因为它提供了非常多的开发者需要的功能特性,例如元数据、反射、垃圾回收、序列化、编辑器支持等一系列功能。

与Unity中的物体容器GameObject相比(名字上类似),个人理解UObject存在更像是一种UE4提供的开发核心工具箱,各种需要高复用性的核心功能都集成到里面,不仅仅说场景里的各个物体需要用到UObject提供的功能,不可见的底层数据管理同样也需要使用到这些。
2 Actor
Actor通常指代引擎代码中的AActor类,所有可以放置到游戏场景中的"物体"都是一个Actor,例如角色、怪物、光(ALight)、场景(AStaticMeshActor)、摄像机(ACameraActor)等等。它提供的功能和Unity的GameObject就比较相似了,作为一个容器包含一个"物体"的各种内容,自然地AActor继承自UObject类,在UObject的基础上,还提供了网络同步、创建销毁、帧更新等功能。

对很多刚接触的开发者来说,可能Actor的名字看起来有点突兀,UE4并没有特别说明该名称的由来,个人理解,Actor单词本身的意思是演员,如果可以把游戏看作一场演出的话,其中就是各位出演角色各司其职,角色和怪物完成各种交互、光照(就像打光师)完成场景光照、场景物体可以各种移动变化、摄像机完成拍摄等等。

3 Component
Component通常指代引擎代码中的UActorComponent类,继承UObject,是所有组件类型的基类,通常挂载在Actor实例下,如同之前所介绍的,Actor本身是一个容器,而Actor具体的特性则由其具有的Component决定,如在世界场景中的位置旋转缩放(USceneComponent)、模样(UMeshComponent)等等。

Component对于Actor来说并不是必选的,可以存在没有组件的空Actor、不需要空间位置的Actor、不需要模样的Actor等等,这样在我们DIY自己需要的Actor时,就可以尽可能少地引入不需要的内容了。
4 Level
Level通常指代引擎代码中的ULevel,也被叫做关卡,是UE4中用于组织游戏场景的基本单位,由一系列可见和不可见的Actor组成,同时还包含Level自身的一些属性,比如关卡属性、关卡蓝图等等,和Unity中的Scene概念相通。

5 World
World,引擎代码中的UWorld,如果说Level代表场景,那World代表承载这个场景的世界,Level必须放在World中才能显示出其中的内容,对于一些以关卡切换来转换游戏场景的游戏来说,他们一个Level就是一个World,这样的概念可能有点多余,但是在很多开放世界的项目中,一个World同时可能不止一个Level,很多3A游戏的无缝多场景切换也是得益于流式关卡(Streaming Level)的使用。

6 Script
除了以上的基本概念,还有脚本(Script)存在于世界的各个Actor中,脚本可以用于给Actor添加不同的行为,脚本可以是C++定义编写的,也可是蓝图定义的,从功能上看,脚本和Component十分相像,但在UE4的组织形式上看,脚本并非是一种Component,而更像是一种对Actor的补充,从程序员角度来讲,就像是对Actor一些接口的覆写(Override),例如自定义BeginPlay、Tick、EndPlay等(对应Unity中的Start、Update、End)时Actor应该有的操作。

顺带一提
你可能已经发现在提到引擎代码中的类名时,相比名称会多出一个前缀(Prefix),这是UE4中一种编码规范,用来指代该类的类别:
T:模板类,例如TArray;U:继承UObject的类;A:继承AActor的类;S:继承SWidget的类;I:抽象界面类;E:枚举;F:其他多数类(不在UObject继承体系内);
参考文献
- [1] 0向往0,剖析虚幻渲染体系(01)- 综述和基础
- [2] UE4官方文档,Actor生命周期
- [3] UE4官方文档,代码规范
《图解UE4渲染体系》Part 0 引擎基础的更多相关文章
- 《图解UE4渲染体系》Part 1 多线程渲染
上回书<Part 0 引擎基础>说到,我们粗略地知道UE4是以哪些类来管理一个游戏场景里的数据的,但这仅仅是我们开始探索UE4渲染体系的一小步. 本回主要介绍UE4渲染体系中比较宏观顶层的 ...
- 剖析虚幻渲染体系(14)- 延展篇:现代渲染引擎演变史Part 1(萌芽期)
目录 14.1 本篇概述 14.1.1 游戏引擎简介 14.1.2 游戏引擎模块 14.1.3 游戏引擎列表 14.1.3.1 Unreal Engine 14.1.3.2 Unity 14.1.3. ...
- 剖析虚幻渲染体系(06)- UE5特辑Part 1(特性和Nanite)
目录 6.1 本篇概述 6.1.1 本篇内容 6.1.2 基础概念 6.2 UE5新特性 6.2.1 UE5编辑器 6.2.1.1 下载编辑器及资源 6.2.1.2 启动示例工程 6.2.1.3 编辑 ...
- 剖析虚幻渲染体系(08)- Shader体系
目录 8.1 本篇概述 8.2 Shader基础 8.2.1 FShader 8.2.2 Shader Parameter 8.2.3 Uniform Buffer 8.2.4 Vertex Fact ...
- 剖析虚幻渲染体系(10)- RHI
目录 10.1 本篇概述 10.2 RHI基础 10.2.1 FRenderResource 10.2.2 FRHIResource 10.2.3 FRHICommand 10.2.4 FRHICom ...
- 剖析虚幻渲染体系(11)- RDG
目录 11.1 本篇概述 11.2 RDG基础 11.2.1 RDG基础类型 11.2.2 RDG资源 11.2.3 RDG Pass 11.2.4 FRDGBuilder 11.3 RDG机制 11 ...
- 剖析虚幻渲染体系(12)- 移动端专题Part 1(UE移动端渲染分析)
目录 12.1 本篇概述 12.1.1 移动设备的特点 12.2 UE移动端渲染特性 12.2.1 Feature Level 12.2.2 Deferred Shading 12.2.3 Groun ...
- 剖析虚幻渲染体系(12)- 移动端专题Part 2(GPU架构和机制)
目录 12.4 移动渲染技术要点 12.4.1 Tile-based (Deferred) Rendering 12.4.2 Hierarchical Tiling 12.4.3 Early-Z 12 ...
- 剖析虚幻渲染体系(12)- 移动端专题Part 3(渲染优化)
目录 12.6 移动端渲染优化 12.6.1 渲染管线优化 12.6.1.1 使用新特性 12.6.1.2 管线优化 12.6.1.3 带宽优化 12.6.2 资源优化 12.6.2.1 纹理优化 1 ...
随机推荐
- 基于MRS-ClickHouse构建用户画像系统方案介绍
业务场景 用户画像是对用户信息的标签化.用户画像系统通过对收集的各维度数据,进行深度的分析和挖掘,给不同的用户打上不同的标签,从而刻画出客户的全貌.通过用户画像系统,可以对各个用户进行精准定位,从而将 ...
- JavaScript使用原型链实现继承
JavaScript实现继承的思想: 一句话总结,让子类的原型等于父类的实例. 详细来说,其实利用了原型的性质即在JavaScript中所有被实例化对象具有相同的原型属性和方法,每一个被实例化对象的原 ...
- Mybatis框架基础入门(六)--动态sql
主要是通过mybatis提供的各种标签方法实现动态拼接sql. 1.if标签 <!-- 根据条件查询用户 --> <select id="queryUserByWhere& ...
- spring集成mongodb简单使用和测试方式
@EnableMongoRepositories @ComponentScan(basePackages = "cn.example") @Configuration public ...
- XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种方式?
XML 文档定义分为 DTD 和 Schema 两种形式,二者都是对 XML 语法的约束,其 本质区别在于 Schema 本身也是一个 XML 文件,可以被 XML 解析器解析,而且 可以为 XML ...
- 什么是 Spring IOC 容器?
Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期.
- 初识mybatis(为什么是mybatis?)
对原生态的 jdbc 中的问题总结 1.数据库连接,使用就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能. 设想:使用数据库连接池管理数据库连接 2.将sql ...
- Python turtle 模块可以编写游戏,是真的吗?
1. 前言 turtle (小海龟) 是 Python 内置的一个绘图模块,其实它不仅可以用来绘图,还可以制作简单的小游戏,甚至可以当成简易的 GUI 模块,编写简单的 GUI 程序. 本文使用 tu ...
- 什么是RESTFUL?REST的请求方法有哪些,有什么区别?
这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [什么是REST ...
- Semantic UI 语义化设计的前端框架
UI是Web的灵魂!Semantic UI是一款语义化设计的前端框架,为攻城师而制作的可复用的开源前端框架. 特性 弃用有歧义的表述 Semantic是围绕自然交流语言而架构的,这使得开发更加直观(易 ...