UE4模块设计

Public和Private目录存在的意义

核心目的在于满足到处条件支持其他模块调用。因为模块内的代码默认是不导出给其他模块的,所以UE4约定:将需要到处的给其他模块使用的代码文件的头文件放在模块的Public目录。

IncludePathModuleNames和DependencyModuleNames比较

相同点:二者都能使本模块可以包含其他模块Public目录下的头文件,从而调用函数。

不同点:IncludePathModule只能调用定义全部在头文件里的函数.

Tip:

*IncludePathModuleNames是过时的用法,现在一般只用DependencyModuleNames

PublicDependencyModuleNames, PrivateDependencyModuleNames的区别?

结论:Private隐藏所有信息,Public只传递头文件信息.链接永不传递,需显式在Build.cs里添加.

最终结论:建议只使用PrivateDependencyModuleNames.杜绝迷惑.

MinimalAPI说明符的作用?

答:暴露(导出)该类的类型信息让其它模块可以

  • Cast到该类型

  • 继承该类型 (该类型的所有定义在.cpp文件的虚函数都需要导出)

  • 使用内联函数

[YourModuleName]_API宏的作用?

答:

  • 放函数声明前用于暴露(导出)该函数

  • 放类声明前用于暴露(导出)该类的所有内容

模块的类型有多少种可以选择?

答:请查看Projects模块中的EHostType::Type.(UBT里也能找到一样的定义)

  • Engine/Source/Runtime/Projects/Public/ModuleDescriptor.h

  • Engine/Source/Programs/UnrealBuildTool/System/ModuleDescriptor.cs

模块的加载时期的有多少种可以选择?

答:请查看Projects模块中的ELoadingPhase::Type.(UBT里也能找到一样的定义)

  • Engine/Source/Runtime/Projects/Public/ModuleDescriptor.h

  • Engine/Source/Programs/UnrealBuildTool/System/ModuleDescriptor.cs

Precompiled Headers(PCH)文件有什么用?

答:由于编译代码时一般不会单独编译头文件,头文件被包含到每个.cpp里,随着.cpp文件一起编译.因此当多个.cpp包含同一份.h时,就带来了重复编译的问题.

于是PCH出现了,这个文件里的头文件只会被编译一次.

  • PCH包含了所有最常使用的头文件

  • 优先编译

  • 仅在这些最常使用的头文件发生变化时,重新编译一次

    • 包含了PCH的.cpp也会重新编译

    • 最好用在引擎代码或者那种很少变动的代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值