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

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

Actor 生命周期

2、BlueprintImplementableEvent和BlueprintNativeEvent之间有什么区别?

BlueprintImplementableEvent和BluuprintNativeEvent两者都是函数标记,用于修饰
函数的。BlueprintImplementableEvent:在C++可以声明函数(不能定义,蓝图重写),在C++里调用该函数,蓝图重写实现该函数BlueprintNativeEvent:在C++可以声明和定义函数,在C++里调用该函数,蓝图重写实现该函数(蓝图可以重写或不重写C++父类函数)
使用方法:
UFUNCTION(BlueprintImplementableEvent) void TestA();
UFUNCTION(BlueprintNativeEvent) void TestB();

UE4函数标记BlueprintImplementableEvent和BlueprintNativeEvent区别

3、BlueprintPure在什么时候使用?

BlueprintPure的特点是在C++和蓝图中都可以调用,但是其修饰的函数必须有函数返回值或
函数参数输出,否则会编译失败。被声明的函数不会以任何方式拥有对象,并且可以在蓝图
或级别蓝图图标中执行。
因此,BlueprintPurs修饰的函数,主要用于(1)数学中的“+、-、*、/”操作  (数值处理),
(2)变量获取节点(获取变量中的部分数据)

UE4入门-常见的宏-UFUNCTION
UE4的BlueprintPure用法

4、UE4的蓝图中对于Foreach等循环采用的是类似并行的方式,试实现一个串行的方法。

首先需要了解并行和串行的区别。
并行通讯:同一时刻,可以一次性执行多步。
串行通讯:同一时刻,只能一步一步的执行。
for(int i=0;i<10;i++);//所以我自己写个循环,不开多线程应该就可以了吧。毕竟没有
找到标准答案,只能自己猜测了。求大佬,教教我。

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

如果采用的是射线检测的话,LineTracebyChannel函数只会返回首个命中对象。
但为了防止真出现子弹穿墙问题,
我们可以让LineTracebyChannel只要击中一个物体就会停止射线检测。如果采用的是为子弹单独制作成一个物体的话,
在射击时,只要将墙体和子弹的碰撞属性设为Block,便会阻止子弹继续前进。

UE4-(蓝图)第二十一课射线
UE4碰撞规则详解

6、UE4对USTRUCT的内存会自动管理吗?

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

UE4入门-常见的宏-UPROPERTY
UE4入门-常见的宏-USTRUCT

7、Blueprintable和BlueprintType的意义

Blueprintable:将使用该宏标志的类公开为创建蓝图的可接受基类(类似于:那些base类)。
其默认为NotBlueprintable,即不可以创建蓝图子类。BlueprintType:将使用该宏标志的类公开为可用于蓝图中变量的类型(类似于:int)。
与之对应的有NotBlueprintType,即不可以在蓝图中创建该类型的变量。

UE4入门-常见的宏-UCLASS
8、UE4 入门宏

UE4中的宏Macro,和函数比较相似,都是对一些功能算法进行了封装,都有一个输入点和输出点,调用方法也类似。
宏与函数的区别在于:
(1)宏是直接展开,即直接将宏的代码直接复制替换到所有使用当前宏的地方,
这点类似于c++中的宏,而函数则是需要编译。
(2)宏运行时无实体,函数运行时有实体。
(3)宏有多个入口Exec多个出口Exec,函数只有一个入口Exec一个出口Exec。
(4)宏可以使用Delay,函数不可以使用Delay。
(5)宏不可以复制,函数可以复制。
(6)宏的参数可以使用“Exec”类型,函数不可以
宏的特点:
(1)类的成员函数可以被子类继承,但宏不会被继承,子类无法使用父类的宏
(2)可以自定义宏库,供所有蓝图使用
(3)宏特别适合于制作控制流,如引擎自带的FilpFlop。
(4)宏中定义局部变量,只能使用基本数据类型,不能使用类类型。
宏 :执行快,功能更强,但占据空间多,安全性差函数:执行较慢,占空间少,安全性高个人总结,优先用函数,少用宏

UE4蓝图——类型 宏(Macro)
[UE4]宏

9、UE4的游戏框架包含哪些内容?

(1)使用玩家输入或者AI逻辑控制PawnsController是一个负责指导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框架快速参考

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

一般地图比较小,且关卡各自独立的时候,
使用openLevel,通过输入一个LevelName来切换关卡。当在开放世界,即地图特别大的时候,我们会将多个关卡拼接为一个大世界地图, 然后采用
无缝切换地图的方式,来加载当前的地图。
此时有三个用来驱动转移的主要函数:
UEngine::Browse、
UWorld::ServerTravel、
APlayerController::ClientTravel。

Unreal Engine4关卡切换
《Exploring in UE4》流关卡与无缝地图切换[经验总结]
多人游戏中的关卡切换

11、UE4的模块系统

首先:UE4中模块分为5部分:
Developer主要是跨平台工具,Merge和一些底层的工具。
Editor主要是编辑器相关的代码
Programs主要是独立于引擎,但大多数又依赖引擎的工具,UBT就在这里
ThirdParty第三方库或者插件
RunTime是主要的Gameplay等等和游戏相关的代码了。

UE4模块系统详解
UE4中的模块(module)介绍

12、简单介绍一下对象系统(UObject类)和类型系统(UClass类)。

UObject类为对象系统的基类。该类的主要作用是存放对象的名字、标记信息
(ObjectFlags)、类型信息(ClassPrivate)、Outer对象和在对象管理数组中的索引。
UClass类主要用于描述C++中的类信息。在UE4在UClass实例不仅仅用于描述
C++(Native)类,也用来描述Blueprint生成的类。

UE4对象系统_UObject&UClass

13、Core模块包含了哪些基础类。

Core模块下有很多文件夹:
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等等

【UE4源代码观察】观察Core模块

14、RHI模块

RHI即RenderHardwareInterface, 即渲染硬件接口, 是UE为实现跨平台而实现的一套API.
每个RHI接口都为OpenGL, Vulkan, DX11等做了不同的实现. 在引擎初始化时使用的绘图
接口就已经确定, 引擎就可以确定RHI所使用接口的版本.

【UE4源代码观察】观察 RHI、D3D11RHI、RenderCore 这三个模块的依赖关系

15、Engine模块

Engine模块主要用于定义actor和组件,同时实现了游戏的基本框架。

16、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

UE4入门之路(UI篇):UMG系统介绍
ue4之UMG

17、UE4中的类型系统

UE4的宏可以分为四种:UCLASS、USTRUCT、UFUNCTION、UPROPERTY。
其中: UCLASS用于修饰类,USTRUCT用于修饰结构体,UFUNCTION用于修饰函数,UPROPERTY用于修饰变量。

UE4类型系统、语言修饰符和元数据
UE4入门-常见的宏-UCLASS
UE4入门-常见的宏-UPROPERTY
UE4入门-常见的宏-USTRUCT
UE4入门-常见的宏-UFUNCTION

问题参考:
UE4基础总结

UE4面试基础知识(一)相关推荐

  1. post获取重定向的链接 python_【转载】python面试基础知识(四) 网络部分

    最近,小编在整理python面试基础知识,看了很多博客.文章和咨询了一些大厂公司大牛.了解到,在python面试的时候,不仅要求你有项目经验,还要考试代码呢!今天,小编和大家分享一下python面试基 ...

  2. Java面试基础知识III

    Java面试基础知识: 1.C++或Java中的异常处理机制的简单原理和应用. 当JAVA 程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常.违反语义规则包括2种情况.一种 ...

  3. Java面试基础知识II

    2.ArrayList和Vector的区别,HashMap和Hashtable的区别 答:就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的, ...

  4. Java视频全套,Java面试基础知识

    引入 Netty的源码分析中, 采用自底向上的方式进行分析, 底指的是一个个的组件, 上指的是整体的架构及一系列操作的执行流程举个简单的例子. Netty服务端的启动流程中, 必然会调用bind方法, ...

  5. css面试基础知识,CSS知识点与面试题解析

    前言 CSS 和 HTML 是网页开发中布局相关的组成部分,涉及的内容比较多和杂乱,本小节重点介绍下常考的知识点. 选择器的权重和优先级 CSS 选择器有很多,不同的选择器的权重和优先级不一样,对于一 ...

  6. Java面试基础知识,20道高频面试题(含答案),附相关架构及资料

    前言 目前绝大部分的Java程序员都是处于增删改查的阶段,但是到了这个阶段后就应该考虑下一个层次的突破了,总不能做一辈子的crud吧- **以目前IT行业的发展趋势以及就业情况来看,**市场早已经不缺 ...

  7. C语言面试基础知识整理

    一.预处理 1.什么是预编译?何时需要预编译? (1)预编译又称预处理,是做些代码文本的替换工作,即程序执行前的一些预处理工作.主要处理#开头的指令,如拷贝#include包含的文件代码.替换#def ...

  8. ES面试基础知识要点

    前言:由于工作内容的变动,接触Elasticsearch的时间变少了很多.担心荒废了这个技能,订阅了Elasticsearch的日报,每天会推送ES的相关知识.业余时间我会整理日报中,我能看懂的知识, ...

  9. Java面试基础知识,一次哔哩哔哩面试经历

    咱先来聊聊Redis 像Redis的基础入门,掌握下图这几个列出来的知识点足以了. 进阶的话,就得下点功夫了,事务.主从复制.哨兵.集群等等之类的搞不明白你就上不去呀. 再看美团亿级流量Redis实战 ...

  10. Java面试基础知识,迈向java面试突击课百度云

    1.为什么要使用消息队列? 分析:一个用消息队列的人,不知道为啥用,有点尴尬.没有复习这点,很容易被问蒙,然后就开始胡扯了. 回答:这个问题,咱只答三个最主要的应用场景(不可否认还有其他的,但是只答三 ...

最新文章

  1. 【翻译】.NET 5 Preview 1 发布
  2. linux bash 获取 国内常见网站的IP列表
  3. Microsoft Visual C++ 2005 SP1无法安装
  4. java判断输入值是否在数组_java判断特定值是否在数组中的方法
  5. 全新安装2008操作系统和2008 server core核心安装
  6. 测试攻城师的一点小开心
  7. 带aidl文件的应用程序在android平台源码中的编译
  8. VBM_DARTEL算法对灰质变化的计算
  9. 怎么隐藏计算机磁盘分区,如何隐藏硬盘分区 隐藏磁盘分区
  10. meson和pkg-config
  11. 安装SQL SERVER2019 安装CAB文件问题
  12. effective stl
  13. continuity不收敛的问题
  14. CSDN,hen hao,hen qiang da
  15. 大数据小项目之电视收视率企业项目10
  16. 2 OsgEarth中实现PBR材质流程总结
  17. 在VMware中安装新版Ubuntu后,无法跨虚拟机复制粘贴和拖拽文件的解决方法
  18. getline()函数详解
  19. psycopg2 , pymysql 连接数据库 操作
  20. 巴贝奇的困境 by: 天涯ID--先生会算命V1

热门文章

  1. JavaScript归纳总结
  2. ArcGIS中相对高程的提取
  3. 计算机word基础操作知识,word文档基本操作
  4. 论文笔记:PPT: Pre-trained Prompt Tuning for Few-shot Learning
  5. 【公众号】JAVA微信公众号技术大佬文章精选
  6. 车金融|金融产品规则引擎的前世今生(中篇)
  7. VMware中安装Ubuntu出现多个vmdk文件原因
  8. Geomesa-HBase索引篇——Z3索引
  9. linux网络不通检查方法
  10. python表情换头_教你用Python制作表情包,实现换脸技术!