Unreal Engine05:UE4基本概念

这篇具有很好参考价值的文章主要介绍了Unreal Engine05:UE4基本概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

主要是介绍一下UE4中的一些常用概念。
参考的博客如下:

  • UE4常用逻辑关系和说明;
  • UE4入门学习4:C++编程介绍;
  • UE4中基础的类及其之间的关系;
  • [官方] 虚幻引擎 4 术语;
  • 《图解UE4渲染体系》Part 0 引擎基础

一、UE4世界结构

UE4世界的主要结构如下:

  • World (当前游戏世界,可以包含多个Level)
    • Level (关卡地图,每个关卡被保存为单独的.umap文件,可以有多个Sub-Levels)
      • Actor(基本实体,可以被动态添加到Level中)
        • Component(组件,隶属于Actor的功能对象体,可以为Actor赋予视觉、声音、运动等表现)
      • Pawn(特殊的Actor,表示游戏中的生命体)
        • Controller(控制器,负责接受来自玩家或者AI的输入,赋予Pawn以玩家或者类似玩家的行为)
      • Character(特殊的Pawn,表示游戏中的人,增加了碰撞组件CapsuleComponent和人物运动组件CharacterMovementComponent
  • GameMode(定义游戏规则)
  • GameState(游戏状态,包含玩家列表、得分情况、玩家任务清单等)
  • PlayerState(玩家的状态,包含名字、得分、等级等)

Controller有两种类型,分别是PlayerController和AIController;
隶属于PlayerController的一些模块如下:

  • HUD(Heads-Up Display,在屏幕上显示二维的UI信息,如血条和玩家名称等,每个PlayerController只有一个AHUD对象)
  • Camera(相当于人的眼睛,提供玩家的视角,每个PlayerController只有一个PlayerCameraManager对象)

PlayerController和Pawn的关系如下:
Unreal Engine05:UE4基本概念

二、UE4基本类结构

  • 其实上面所提到的世界中的大部分模块都是一个类,但这里只介绍一些常用的类;

1. UObject

  • 是所有Object的基类;

  • 功能包括垃圾回收、元数据、在磁盘和网络中的序列化、类属性和函数的运行时反射和蓝图集成等;

  • 不能被添加到关卡Level中,也不能在蓝图中使用,但可以包含数据和函数;

  • 常用的宏:

    • UCLASS:声明类;
    • USTRUCT:声明结构体;
    • UFUNCTION:声明成员函数;
    • UPROPERTY:声明成员变量;
  • 一个例子如下:

USTRUCT()
struct FVector2D
{
	UPROPERTY()
	float X;
	UPROPERTY()
	float Y;

	UFUNCTION()
	float GetLength() const;
}
  • 下面介绍一下一些常用宏的说明符;

  • (1) UPROPERTY()的常用说明符如下:

    • VisibleAnywhere:在蓝图面板的详细信息和主面板的蓝图实例的详细信息窗格中都可见,也就是变量在所有的属性窗口中均可见,但无法编辑
    • VisibleDefaultsOnly:仅在蓝图面板的详细信息窗格中可见,同时无法编辑,也就是蓝图类内变量可见,可以得知一个相对公共的设定值;
    • VisibleInstanceOnly:仅在主面板的蓝图或C++类实例的详细信息窗格中可见,同时无法编辑,也就是蓝图对象内变量可见,只能得知一个相对私有的设定值;
    • EditAnywhere:在蓝图面板的详细信息和主面板的蓝图实例的详细信息窗格中都可见且可被修改,也就是变量在所有的属性窗口中均可见且可被修改
    • EditDefaultsOnly:仅在蓝图面板的详细信息窗格可见且可被修改,修改的是类的值,将影响该类之后生成的所有实例;
    • EditInstanceOnly:仅在主面板的蓝图或C++类实例的详细信息窗格可见且可被修改,修改对象的值,仅影响当前拖动到地图中生成的实例;
    • BlueprintReadOnly:可在蓝图中读取值,但不能修改值;
    • BlueprintReadWrite既可在蓝图中读取值,也可以在蓝图中修改值
    • Category="xxx|xxx":将当前变量分组到文件夹中,|符号用于创建子文件夹,注意引号内的所有空格均有意义,注意删掉无意义空格;
    • DisplayName="xxx":更改在信息窗格中显示的文本标签名字;
    • ToolTip="xxx":当鼠标悬停到信息窗格的对应属性时出现的提示信息文本,如果没有,则默认使用代码中的注释内容;
  • 参考:

    • UE4 C++学习 浅析UProperty属性说明符;
    • [官方] https://docs.unrealengine.com/5.0/zh-CN/unreal-engine-uproperty-specifiers/;
  • 一些补充说明:

    • 所有带Edit的说明符和带Visible的说明符不能同时出现,只能出现其中一种;
    • BlueprintReadOnlyBlueprintReadWrite起码要出现一个,不然在蓝图中右键是找不到这个属性的;
  • (2) UFUNCTION()的常用说明符如下:

    • BlueprintCallable:该函数可以在蓝图中被调用
    • BlueprintImplementableEvent:这个函数只能用蓝图实现,不能用C++实现;
    • BlueprintNativeEvent:这个函数必须用蓝图重写实现,有默认调用的方法(以_Implementation为后缀,需要用C++实现),因此在蓝图中是重写实现,不能用C++重写;
    • BlueprintPure:这个函数在蓝图中没有接口,不能被其他函数调用,只能用它的返回结果,而且不会缓存它的计算结果,每次调用时均会执行一次计算,可以参考:【UE·C++】BlueprintCallable与BlueprintPure区别;
    • DisplayNameToolTip均是元数据类型,使用时应写meta = (MetaTag1="xxx", MetaTag2="xxx", ...),更多关于元数据的介绍参考官方文档:https://docs.unrealengine.com/4.27/zh-CN/ProgrammingAndScripting/GameplayArchitecture/Metadata/;
  • 参考:

    • UE4 C++学习 UFunction函数说明符;
    • [官方] https://docs.unrealengine.com/5.0/zh-CN/function-specifiers/;
  • 一些补充说明:

    • BlueprintCallableBlueprintPure只能出现一个,前者仅在第一次调用时计算结果后者是每次调用均重新计算结果,因此计算的开销很大;
  • (3) UCLASS()的常用说明符如下:

    • Blueprintable:该类可以在主面板右键创建基于此类的蓝图类
  • 参考:

    • [官方] https://docs.unrealengine.com/5.0/zh-CN/class-specifiers/;

2. AActor

  • 继承于UObject
  • 是所有Actor的基类;
  • 有一个RootComponent成员变量,用于保存组件树中的根组件,结构示意如下:
    Unreal Engine05:UE4基本概念
  • 一个Actor如果想被放进Level中,就必须先赋予USceneComponent * RootComponent一个SceneComponent对象,因为SceneComponent对象能为Actor提供变换信息(位置、旋转和缩放等);
  • 生命周期的事件:
    • BeginPlay():Actor对象首次在Gameplay中存在时调用;
    • Tick():每帧调用一次;
    • EndPlay():Actor对象离开Gameplay空间时调用;

3. UActorComponent

  • 是所有Component的基类;

  • 不可以单独存在,只能作为Actor中的成员变量使用;

  • 派生的Component类包括:

    • USceneComponent:使Actor有位置变换的能力,包括位移、旋转和缩放等;
    • UPrimitiveComponent:使Actor有被渲染的能力;
    • UMeshComponent:使Actor有形状外貌的能力;
    • UStaticMeshComponent静态网格体组件,继承前面3个类,是UE4的基本场景构建单位,最为常用;
    • UChildActorComponent:可以作为子节点搭建一棵组件树;
  • 它们的关系如下:
    Unreal Engine05:UE4基本概念

  • 其他的组件介绍可以参考官方博客:https://docs.unrealengine.com/4.27/zh-CN/Basics/Components/;

4. APawn

  • 继承于AActor
  • 有物理表示和基本的移动能力;
  • 可以被PlayerController或者AIController实现控制;

5. ACharacter

  • 继承于APawn
  • 在Pawn的基础上默认挂载了三个组件:
    • USkeletalMeshComponent:骨骼网络组件;
    • UCharacterMovementComponent:人物移动组件,包括走、跑、跳、飞、游泳等;
    • UCapsuleComponent:胶囊体(用于碰撞)组件;
  • APawnACharacter之间的关系如下:
    Unreal Engine05:UE4基本概念

6. AController

  • 可以和Pawn关联;
  • Controller和Pawn的关系:
    • Controller的抽象级别要更高一点,生命周期也更长,相当于一个控制中心,而Pawn则为一个被控制的实体
    • Controller可以搭配不同的Pawn,并负责向Pawn输出某些共有的控制逻辑,或者说是一套行为准则;
    • 每个Pawn只能认领一个Controller,并接受它所输出的行为准则,当然,它也可以更换不同的Controller获得不同的行为准则;
  • Controller和Pawn的关系示意图如下:
    Unreal Engine05:UE4基本概念

三、代码命名规范

  • 类、变量和函数的命名均用大驼峰式,首字母大写;
  • 每个的命名前面均需要加前缀,如下:
    • A:派生自AActor的类;
    • U:派生自UObject的类;
    • S:派生自SWidget的类;
    • E:枚举类;
    • I:接口类;
    • T:模板类;
    • F:除上述的其他类;
  • 和类对应的C++文件名则不加前缀;
  • 变量的命名仅布尔变量需要增加前缀,如下:
    • b:布尔变量;
  • 如果返回值是布尔类型的函数的命名需要增加前缀,如下:
    • Is或者Should:返回值是布尔类型的函数;

四、常用变量类型

1. 基本数据类型

  • bool:布尔类型;
  • int8 / uint8:整数,8bit;
  • int16 / uint16:整数,16bit,相当于short int;
  • int32 / uint32:整数,32bit,相当于int;
  • int64 / uint64:整数,64bit,相当于long long int;
  • float:单精度浮点数,32bit;
  • double:双精度浮点数,64bit;

2. 指针类型

  • PTRINT:和指针同样大小的整数;

3. 字符串类型

  • TCHAR:字符,相当于char;
  • FString
  • FText
  • FName

4. 容器类型

  • TArray:动态数组,相当于vector;
  • TDoubleLinkedList:双向链表,相当于list;
  • TMap:字典,相当于unordered_map;
  • TSet:集合,相当于unordered_set;
  • TQueue:队列,相当于queue;

5. 文件相关类型

  • FFileManagerGeneric
  • FArchive:序列化相关操作类;

6. 智能指针类型

  • TSharedPtr:共享指针,针对普通的C++对象;
  • TWeakPtr:弱指针,针对普通的C++对象;
  • TWeakObjPtr:针对UObject对象;
  • TAutoPtr
  • TScopedPtr
  • TUniquePtr

7. 其他类型

  • FVector:空间坐标向量,有三个成员变量,分别代表X轴、Y轴和Z轴;

    • 可以参考博客:UE4 FVector向量的一些知识;
  • FRotator:旋转向量,有三个成员变量Pitch、Yaw和Roll,分别代表绕Y轴、Z轴和X轴旋转;

    • 注意如果该变量可以在细节面板上显示,则会自动转换为X、Y和Z,此时就各自对应X轴、Y轴和Z轴;
    • 也就是说在Editor中显示是正常的顺序;
    • 但在C++代码中是Y轴、Z轴和X轴的顺序;
  • FMath:数学函数功能类;

五、注释

1. 函数注释

  • 遵循JavaDoc形式,如下:
/*
* 函数功能说明
* 
* @param 参数1 参数1说明
* @param 参数2 参数2说明
* @return 返回值说明
*/
返回值类型 函数名(参数1, 参数2);
  • 或者用一行注释说明,如下:
/** 函数功能及参数说明 */
返回值类型 函数名(参数1, 参数2);

2. 函数内注释

  • 在代码的上一行独立注释,如下:
	...
	// 注释内容
	代码内容;
	...
  • 如果注释的内容太长可以手动分开多段来写;

六、资源命名规范

  • 资源均放在Content文件夹下,每个资源文件的命名要加上前缀,如下:

    • L_:关卡(Level / Map);
    • BP_:蓝图(Blueprint);
    • S_:静态网格(StaticMesh);
    • SK_:骨架网格(SkeletalMesh);
    • T_:纹理(Texture);
    • PS_:粒子系统(Particle System);
    • WBP_:组件蓝图(Widget Blueprint);
  • 存放资源的文件夹也要对应命名,如下:文章来源地址https://www.toymoban.com/news/detail-457088.html

    • Maps:关卡;
    • Blueprints:蓝图;
    • Animations:动画;
    • Sounds:音频;
    • Materials:材质;
    • Textures:纹理;
    • Effects:特效;

到了这里,关于Unreal Engine05:UE4基本概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【UE4闪退解决办法】D3D设备丢失,Unreal Engine is exiting due to D3D device being lost

    百度那些被小编到处传的,一般来说都没啥用的。我后来在贴吧老哥的楼里才翻出一个别样的解决方法。 打开英伟达的这个驱动软件,GeForce Experience  进去后,在“驱动程序”里面,点3个点打开列表,选择“studio驱动程序” 然后就是选择自定义安装(不要快速!),之后弹

    2024年02月13日
    浏览(156)
  • Unreal Engine(UE5)中构建离线地图服务

    1.     首先需要用到3个软件,Unreal Engine,gis office 和 bigemap离线服务器 Unreal Engine下载地址:点击前往下载页面 Gis office下载地址:点击前往下载页面 Bigemap离线服务器 下载地址: 点击前往下载页面 Unreal Engine用于数字孪生项目开发,gis office是一款地理信息软件,可用于获取

    2024年01月18日
    浏览(46)
  • UE(Unreal Engine,虚幻引擎)和Unity的区别与联系

    一、基本概念 游戏制作软件中最著名的两个游戏引擎是UE和Unity,二者有各自的特点和适用场景。 UE是指Unreal Engine(虚幻引擎)的简称,它是由Epic Games(Epic游戏公司)开发的一款高度先进的游戏开发工具。UE是一种3D图形渲染引擎,为开发者提供了一系列强大的功能,使他们

    2024年04月13日
    浏览(47)
  • ue4 unreal NDisplay插件 简易使用 三折幕 详细...

    仅支持4.27版本 NDisplay文档 https://docs.unrealengine.com/4.27/en-US/WorkingWithMedia/IntegratingMedia/nDisplay/Overview/ Switchboard文档 https://docs.unrealengine.com/4.27/en-US/WorkingWithMedia/CommunicatingWithMediaComponents/Switchboard/ 1.打开任意项目,开启两个插件并重启 NDisplay:多折幕插件 Switchboard:用于启动多折幕

    2023年04月17日
    浏览(59)
  • ue4 unreal Instanced Static Mesh Component 实例化静态网格体组件 的用法及意义

    注意这是个组件  ​​  这个组件的意义 本来在建模软件里面就有这个功能 用来应对大量,同样网格,同样材质,不同几何信息(位置 旋转 缩放)的网格 比如场景里面的垃圾桶 电线杆 路灯等几百上千的东西  我试过一两万挺轻松的... 比较骚的操作是可以更新几何信息,

    2024年02月09日
    浏览(64)
  • 【UE4 塔防游戏系列】05-制作可跟踪旋转的炮塔

    目录 效果 步骤 一、设置游戏观察视角  二、设置PlayerController 三、制作可跟踪旋转的炮塔   一、设置游戏观察视角  在视口中调整好位置,能够看到敌人行走的全部路线即可。然后在此处创建CameraActor  打开关卡蓝图,设置使用这个相机的视角  在世界场景设置中,默认的

    2024年02月16日
    浏览(47)
  • UE4 Sequence添加基础动画效果 (05-蓝图触发Sequence)

    在上一篇博客(UE4 Sequence添加基础动画效果 (04-在序列中使用粒子效果))的基础上增加角色进入某个区域触发过场动画的效果。 1.点击编辑FallingRocks来打开落石蓝图  打开后可以发现一个自定义事件节点RockTrigger  2.打开过场动画主序列  将两个落石Actor拖入  3.点击“+Tr

    2024年02月07日
    浏览(58)
  • UE4 框架介绍

            我们知道每一个大型的游戏引擎,都有一个属于他们自己的架构,虚幻引擎也不例外。游戏由 GameMode 和 GameState 组成。加入游戏的人类玩家与 PlayerControllers 相关联。这些 PlayerController 允许玩家在游戏中拥有棋子,以便他们可以在关卡中拥有物理表示。PlayerControllers

    2023年04月16日
    浏览(43)
  • 【整活】Unreal Engine 3体验

    今天下了UDK,想在用虚幻5的年头体验一下\\\"上古时代\\\"的虚幻3,链接 安装 跟虚幻4对比,虚幻4可是比它大不少:      一般来说,编辑器程序在这个文件夹中 比如我的这个: 这个UDK.exe就是虚幻3编辑器程序 游戏 双击打开,却发现它默认运行自带的游戏       ......别说这画质还可以..

    2023年04月08日
    浏览(41)
  • 【UE4 制作自己的载具】3-载具蓝图实现(基本)

    新建一个蓝图,继承“WheeledVehicle(轮式载具)” 命名为“Vehicle_BP”,双击打开该蓝图 选中“Mesh(继承)”,然后在细节中,骨架网格体选择“Vehicle” 添加一个弹簧臂和摄像机组件,摄像机组件为弹簧臂组件的子项 调整一下弹簧臂的位置 勾选使用摄像机延迟,目的是让摄

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包