1、Actor的EndPlay事件在哪些时候会调用?

EndPlay - 在数个地方调用,保证 Actor 的生命走向终点。在游戏过程中,如包含流关卡的 
Actor 被卸载,Destroy 将发射此项和关卡过渡。调用 EndPlay 的全部情形:
   (1)对 Destroy 显式调用
   (2)Play in Editor 终结
   (3)关卡过渡(无缝行程或加载地图) 包含 Actor 的流关卡被卸载
   (4)Actor 的生命期已过
   (5)应用程序关闭(全部 Actor 被销毁) 

2、如何解决子弹穿墙问题?

如果采用的是射线检测的话,LineTracebyChannel函数只会返回首个命中对象。
但为了防止真出现子弹穿墙问题,
我们可以让LineTracebyChannel只要击中一个物体就会停止射线检测。

如果采用的是为子弹单独制作成一个物体的话,
在射击时,只要将墙体和子弹的碰撞属性设为Block,便会阻止子弹继续前进。

3、UE5对USTRUCT的内存会自动管理吗?

不会,
只有使用UPROPERTY宏标记的USTRUCT才能被计入垃圾回收。

 4、Blueprintable和BlueprintType的意义

Blueprintable:将使用该宏标志的类公开为创建蓝图的可接受基类(类似于:那些base类)。
其默认为NotBlueprintable,即不可以创建蓝图子类。

BlueprintType:将使用该宏标志的类公开为可用于蓝图中变量的类型(类似于:int)。
与之对应的有NotBlueprintType,即不可以在蓝图中创建该类型的变量。 

5、UE5的游戏框架包含哪些内容?

(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存在于所有机器上,可以自由复制保持同步。 

6、切换关卡的命令是什么?

一般地图比较小,且关卡各自独立的时候,
使用openLevel,通过输入一个LevelName来切换关卡。

当在开放世界,即地图特别大的时候,我们会将多个关卡拼接为一个大世界地图, 然后采用
无缝切换地图的方式,来加载当前的地图。
此时有三个用来驱动转移的主要函数:
UEngine::Browse、
UWorld::ServerTravel、 
APlayerController::ClientTravel。 

7、UMG是什么?

UMG模块是虚幻运动图形的简称。
主要用到以下几种文件:
 1、Blueprint( User Inteface-Blueprint) 也就是常说的UMG,是我们常用的
     UI工程文件
 2、Font(字体资源拖入Content Browser自动生成)字体文件
 3、Texture (PNG资源拖进来可以自动生成) 图片资源文件
 4、Material 材质文件,可用于UI材质或者mesh材质
 5、Actor(Blueprint Class-Actor)可以摆放到场景中的文件类型,
     用于制作3DUI 

8、Core模块主要包含了C++相关的基础类

Containers 包含各种C++容器类:Array、List、Map、Queue、Set等等
Delegates 包含各种代理声明的宏:DECLARE_DELEGATE、DECLARE_MULTICAST_DELEGATE、DECLARE_EVENT等等
Logging 包含日志功能类和宏:UE_LOG、ELogVerbosity等等
Math 包含各种数学函数和结构:Box、Color、Matrix、Quat、Range、Rotator、Vector、UnrealMath等等