UE4基础总结

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

    • 对 Destroy 显式调用
    • Play in Editor 终结
    • 关卡过渡(无缝行程或加载地图) 包含 Actor 的流关卡被卸载
    • Actor 的生命期已过
    • 应用程序关闭(全部 Actor 被销毁)
    • 游戏结束
      见:Actor生命周期
  2. BlueprintImplementableEvent和BlueprintNativeEvent之间有什么区别?

    • 用BlueprintImplementableEvent标明的函数在C++代码中不需要有方法体,方法体在蓝图中实现。

    • 如果定义函数UFUNCATION时使用BlueprintNativeEvent标识,表示期望该函数在蓝图被重写(override)(这里的重写指的是定义一个自定义事件Custom Event),同时又拥有C++的实现方法,那么定义函数时,除了自身的方法名以外,还需要加一个后缀_Implementation,并在C++实现这个函数“函数名_Implementation”。这样定以后,会优先调用蓝图中的Event,如果蓝图中该Event没有方法体,则调用C++的方法_Implementation。

    /** Override in BPs to power up bombs. */  
    UFUNCTION(BlueprintNativeEvent, Category = "Game")  
    int32 AAAA();  
    int32 AAAA_Implementation(); 
    
  3. BlurprintPure在什么时候使用?

    这是一个可以从蓝图中调用的原生函数,它执行原生代码,不会修改调用它的对象的任何内容,也不会修改任何其他的全局状态。
    这意味着调用该代码不会修改任何内容,它仅是取入输入,并向您提供一个输出。
    像数学节点(+ 、 - 、 * 等)、变量获取节点、或者任何不永久性地修改任何内容的东西都属于这类内容。
    这些内容不需要规划如何执行,它们没有线连接到白色执行线。编译器会根据哪个BlueprintCallable节点需要这些节点处理的数据来自动地辨别出他们。

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

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

    LineTracebyChannel只要击中一个物体就会停止。

  6. UE4对UStruct的内存会自动管理吗?

    只有UPROPERTY宏标记的USTRUCT才能被计入垃圾回收

  7. Blueprintable和BlueprintType的意义

    默认情况下上边的UCLASS() 宏同下图中UCLASS(Blueprintable)的作用是一样的。这样声明的类在UE4中是可以创建基于此类的蓝图子类。
    如果不想让C++类能创建蓝图子类,则只需把 Blueprintable 替换为NotBlueprintable.
    在UCLASS()宏参数中还有一个名为NotBlueprintType的宏,这个宏的意思是在蓝图中无法创建基于此c++类的变量。而基于此C++类的蓝图子类则不受此限制。
    BlueprintType这个宏的意思是在蓝图中可以创建基于此c++类的变量。

  8. UE4 入门宏

    EditAnyWhere: 此成员变量在蓝图编辑器中和关卡细节面板中都会被暴露出来。
    VisibleAnywhere:指示此属性在所有属性窗口中都可见,但无法编辑。

    EditDefaultsOnly: 此成员变量只会在蓝图编辑器中被暴露出来。
    VisibleDefaultOnly:表示此属性仅在原型的属性窗口中可见,并且不能被编辑。

    EditInstanceOnly: 此成员变量只会在关卡细节面板中被暴露出来。
    VisibleInstanceOnly: 表示此属性仅在实例的属性窗口中可见,而不在原型中显示,且无法编辑。

    Transient:属性是暂时的,这意味着它不会被保存或加载。以这种方式标记的属性在加载时将被填满。

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

    使用玩家输入或者AI逻辑控制Pawns

    Controller是一个负责指导Pawn的Actor。它们通常有两种版本,AIController和PlayerController。控制器可以“拥有”一个Pawn来控制它。
    PlayerController是Pawn与玩家控制他之间的接口。其代表了玩家的意志。
    AIController是一个可以控制Pawn的模拟意志。

    代表世界的玩家、朋友、敌人

    Pawn是一个actor。Pawn可以被Controller持有,他们可以接收输入,可以做很多游戏逻辑。
    Character是一个人形风格的Pawn,继承自Pawn。他默认自带一个胶囊体碰撞器和角色运动组件。他可以做到基本的人形移动,他可以平滑的复制移动并且有一些动画相关的功能。

    向玩家展现信息

    HUD是一个抬头显示器。可以显示健康、弹药等,每个PlayerController通常有一个。
    Camera相当于玩家的眼球并且管理他的行为。每个PlayerController通常也有其中一个。

    设置与追踪游戏的规则

    游戏模式(GameMode)游戏的概念分为两类。GameMode与GameState是游戏的定义,包括像游戏规则的事情,胜利的条件。他只存在于服务器上。他通常没有太多的数据变化,也没有客户端需要了解的瞬态数据。
    游戏状态(GameState)包括像关联球员名单得分,那里的作品是一盘棋,或者游戏中的任务完成列表。GameState存在于所有服务器与客户端上,可自由复制使所有计算机保持最新状态。
    玩家状态(PlayerState)是游戏参与者的状态,PlayerState包含玩家姓名,得分,类似MOBA的匹配等级。所有玩家的PlayerState存在于所有机器上,可以自由复制保持同步。

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

  11. UE4 模块

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

  12. CoreUObject主要是包含虚幻引擎的对象系统(UObject)和类型系统(UClass)

    UObject是引擎所有对象的基类,提供了对象的反射、序列化、GC等功能
    UClass是UObject对象的反射对象,记录了大量UObject的对象数据;这些记录的对象数据帮助

  13. 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等等

  14. RHI模块

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

  15. Engine 模块

    Defines actors and components, and implements the game framework.
    定义actor和组件,同时实现了游戏的基本框架。

  16. InputCore 模块

    Key definitions and related code
    键定义和相关代码

  17. UMG 模块

    Unreal Motion Graphics. Unreal’s data-driven UI framework built on top of Slate. Work in progress.
    虚幻用户图形接口。建立在Slate之上的数据驱动的虚幻UI框架。

参考:UE4面试题

发布了35 篇原创文章 · 获赞 6 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/mrbaolong/article/details/104499976