EndPlay - 在数个地方调用,保证 Actor 的生命走向终点。在游戏过程中,如包含流关卡的 Actor 被卸载,Destroy 将发射此项和关卡过渡。调用 EndPlay 的全部情形:
Actor 生命周期
BlueprintImplementableEvent
和 BluuprintNativeEvent
两者都是函数标记,用于修饰函数的。
BlueprintImplementableEvent
:在 C++ 可以声明函数(不能定义,蓝图重写),蓝图定义实现该函数,可以在 C++ 里调用。
BlueprintNativeEvent
:在 C++ 可以声明并定义该函数(带 _Implementation
后缀),蓝图重写实现该函数有优先调用权(蓝图可以重写或不重写 C++ 父类函数),如果没有实现则调用 C++ 实现的版本。
使用方法
UFUNCTION(BlueprintImplementableEvent) void TestA();
UFUNCTION(BlueprintNativeEvent) void TestB();
复制代码
UE4 函数标记 BlueprintImplementableEvent 和 BlueprintNativeEvent 区别
BlueprintPure
的特点是在 C++ 和蓝图中都可以调用,但是其修饰的函数必须有函数返回值或 函数参数输出,否则会编译失败。被声明的函数不会以任何方式拥有对象,并且可以在蓝图或关卡蓝图图标中执行。 因此,BlueprintPurs
修饰的函数,主要用于
UE4 入门-常见的宏-UFUNCTION
UE4 的 BlueprintPure 用法
首先需要了解并行和串行的区别。
for(int i=0;i<10;i++); // 所以我自己写个循环,不开多线程应该就可以了吧。毕竟没有找到标准答案,只能自己猜测了。求大佬,教教我。
复制代码
如果采用的是射线检测的话,LineTracebyChannel
函数只会返回首个命中对象。但为了防止真出现子弹穿墙问题,我们可以让 LineTracebyChannel
只要击中一个物体就会停止射线检测。
如果采用的是为子弹单独制作成一个物体的话,在射击时,只要将墙体和子弹的碰撞属性设为 Block
,便会阻止子弹继续前进。
UE4 -(蓝图)第二十一课射线
UE4 碰撞规则详解
不会,只有使用 UPROPERTY
宏标记的 USTRUCT
才能被计入垃圾回收。
UE4 入门-常见的宏 - UPROPERTY
UE4 入门-常见的宏 - USTRUCT
Blueprintable
: 将使用该宏标志的类可以作为创建蓝图的基类(类似于:那些 base 类)。 其默认为 NotBlueprintable
, 即不可以创建蓝图子类。
BlueprintType
: 将使用该宏标志的类可以作为蓝图中变量的类型(类似于:int)。 与之对应的有 NotBlueprintType
,即不可以在蓝图中创建该类型的变量。
UE4 入门-常见的宏 - UCLASS
UE4 中的宏 Macro,和函数比较相似,都是对一些功能算法进行了封装,都有一个输入点和输出点,调用方法也类似。
Exec
多个出口 Exec
,函数只有一个入口 Exec
一个出口 Exec
。Delay
,函数不可以使用 Delay
。Exec
类型,函数不可以FilpFlop
。个人总结,优先用函数,少用宏
UE4 蓝图——类型 宏(Macro)
[UE4]宏
(1)使用玩家输入或者 AI 逻辑控制 Pawns
Controller 是一个负责指导 Pawn
的 Actor
。它们通常有两种版本,AIController
和 PlayerController
。控制器可以 “拥有” 一个 Pawn 来控制它。 PlayerController
是 Pawn
与玩家控制他之间的接口。其代表了玩家的意志。 AIController
是一个可以控制 Pawn
的模拟意志。
(2)代表世界的玩家、朋友、敌人
Pawn
是一个 Actor
。Pawn
可以被 Controller 持有,他们可以接收输入,可以做很多游戏逻辑。 Character 是一个人形风格的 Pawn
,继承自 Pawn
。他默认自带一个胶囊体碰撞器和角色运 动组件。他可以做到基本的人形移动,他可以平滑的复制移动并且有一些动画相关的功能。
(3)向玩家展现信息
HUD 是一个抬头显示器。可以显示健康、弹药等,每个 PlayerController
通常有一个。 Camera 相当于玩家的眼球并且管理他的行为。每个 PlayerController
通常也有其中一个。
(4)设置与追踪游戏的规则
游戏模式(GameMode
)游戏的概念分为两类。GameMode
与 GameState
是游戏的定义, 包括像游戏规则的事情、胜利的条件。它只存在于服务器上。它通常没有太多的数据变化, 也没有客户端需要了解的瞬态数据。
游戏状态(GameState
)包括像关联玩家名单得分,那里的作品是一盘棋,或者游戏中的 任务完成列表。GameState
存在于所有服务器与客户端上,可自由复制使所有计算机保持 最新状态。
玩家状态(PlayerState
)是游戏参与者的状态,PlayerState
包含玩家姓名,得分, 类似 MOBA 的匹配等级。所有玩家的 PlayerState 存在于所有机器上,可以自由复制保持同步。
UE4 - 游戏框架 —— GameMode、GameState、PlayerState、Controller、Pawn
Gameplay 框架快速参考
一般地图比较小,且关卡各自独立的时候,使用 openLevel
,通过输入一个 LevelName 来切换关卡。
当在开放世界,即地图特别大的时候,我们会将多个关卡拼接为一个大世界地图, 然后采用 无缝切换地图的方式,来加载当前的地图。
此时有三个用来驱动转移的主要函数:
UEngine::Browse
UWorld::ServerTravel
APlayerController::ClientTravel
Unreal Engine4 关卡切换
《Exploring in UE4》流关卡与无缝地图切换[经验总结]
多人游戏中的关卡切换
首先:UE4 中模块分为 5 部分:
Developer
主要是跨平台工具,Merge 和一些底层的工具。Editor
主要是编辑器相关的代码Programs
主要是独立于引擎,但大多数又依赖引擎的工具,UBT 就在这里ThirdParty
第三方库或者插件RunTime
是主要的 Gameplay 等等和游戏相关的代码了。UE4 模块系统详解
UE4 中的模块(module)介绍
UObject
类为对象系统的基类。该类的主要作用是存放
UClass
类主要用于描述 C++ 中的类信息。在 UE4 在 UClass
实例不仅仅用于描述 C++(Native) 类,也用来描述 Blueprint 生成的类。
UE4 对象系统 _UObject & UClass
Array
、List
、Map
、Queue
、Set
等等DECLARE_DELEGATE
、DECLARE_MULTICAST_DELEGATE
、DECLARE_EVENT
等等UE_LOG
、ELogVerbosity
等等Box
、Color
、Matrix
、Quat
、Range
、Rotator
、Vector
、UnrealMath
等等【UE4 源代码观察】观察 Core 模块
RHI 即 RenderHardwareInterface , 即渲染硬件接口, 是 UE 为实现跨平台而实现的一套 API 每个 RHI
接口都为 OpenGL, Vulkan, DX11 等做了不同的实现. 在引擎初始化时使用的绘图 接口就已经确定, 引擎就可以确定 RHI 所使用接口的版本.
【UE4 源代码观察】观察 RHI、D3D11RHI、RenderCore 这三个模块的依赖关系
Engine 模块主要用于定义 Actor 和组件,同时实现了游戏的基本框架。
UMG 模块是虚幻运动图形的简称。 主要用到以下几种文件:
UE4 入门之路(UI篇):UMG 系统介绍
ue4 之UMG
UE4 的宏可以分为四种:UCLASS
、USTRUCT
、UFUNCTION
、UPROPERTY
。 其中:
UCLAS
用于修饰类,USTRUCT
用于修饰结构体,UFUNCTION
用于修饰函数,UPROPERTY
用于修饰变量。UE4 类型系统、语言修饰符和元数据
UE4 入门-常见的宏 - UCLASS
UE4 入门-常见的宏 - UPROPERTY
UE4 入门-常见的宏 - USTRUCT
UE4 入门-常见的宏 - UFUNCTION