美文网首页
UE4 C++模块化编程

UE4 C++模块化编程

作者: Lif68 | 来源:发表于2020-03-24 15:25 被阅读0次

    参考文献:

    游戏模块 | 虚幻引擎文档

    编译工具 | 虚幻引擎文档

    《大象无形:虚幻引擎程序设计浅析》

    ue4 模块的构建和加载 - 冷欺花 - 博客园

    [UE4C++程序]GameModule与Plugin_C/C++_程序达人-CSDN博客

    基本概念:在UE3的时候是用MakeFiles实现开发中编辑器和最终发行游戏之间的分离,到了UE4有了UnrealBuildTool和UnrealHeaderTool,带来了模块机制,解决了这个问题的同时也带来了模块化编程的新特性。UnrealBuildTool和UnrealHeaderTool的工作内容:对模块的配置、编译,指导引擎对模块的启动、运行。

    我们的项目其实是UE4引擎的一个Module(模块),这也是为什么你给你的项目创建新的C++类,每个类的UClass() class 后面都会跟上个XXX_API宏,不同的模块之间就是通过这个区分模块的宏进行互相访问的。


    UE4中的一个模块的模块文件夹内应该包含的内容:

    模块名.h和模块名.cpp也可以和build.cs放在一起

    ·Public文件夹,用来存放头文件,头文件里面如果是声明一些数据结构或者比较简单的实现:如获取路径函数,那就不用在源文件里面写实现,直接写在头文件里面了。

    ·Private文件夹,用来存放源文件和预编译头,

    ·.build.cs文件,里面的配置参数用于指导UnrealBuildTool处理该模块,然后通过处理后的数据指导引擎如何使用该模块的行为。

    ·PrivatePCH.h文件,预编译头,是共享模块中大家都会用到的头文件,加快项目的编译速度(当项目有很多源文件的时候很有用),举个例子:PrivatePCH里面包含Log.h,Log.h声明了好几个Log供不同的类debug输出

    **实际上PrivatePCH就是一个头文件,只不过这个头文件的作用就是减少源文件中依赖的头文件数量(有点绕)

    **无论是在Source文件夹下的模块(按照上面格式定义的模块),还是插件类型的模块,其模块的布局都是一样的

    **模块里面可以有模块,允许套娃(不建议),比如project可以有plugin插件,可以在Source里面套模块,可以在plugin里面套模块,模块里面可以有模块......一切只需要你按照上图那样布局,把 build.cs 模块.h 模块.cpp 写好就行。但是,至少要使用 IMPLEMENT_PRIMARY_GAME_MODULE 注册一个模块,这个模块就是你游戏本体模块,其他模块都是游戏性模块,用IMPLEMENT_GAME_MODULE 方法进行注册。

    **注意,多一个模块说明将会多一个dll,核心的游戏性模块不应该分成太多个dll,这样会导致更加频繁地处理 DLL文件导出或接口类,除非你要搞个很长期维护的项目,至少得是维护一个商业游戏引擎级别的,不然,按照官方文档里面说的——“使用多个游戏性模块会使得连接时间更短,代码迭代速度更快; 但使用过多的模块,你需要更加频繁地处理 DLL 文件导出 和/或 接口类。对于引擎和编辑器代码来说,做出这种妥协是正确的选择,但对于游戏性代码来说,就不是很合理了。”所以,一般的游戏,核心的游戏性模块应该在项目Source文件夹里面套娃,依赖性和耦合性没有那么强的功能,建议做成Plugin插件


    .uplugin  .uproject  .Target.cs

    三个文件都是模块说明文件,都有引入其他模块的功能

    .uplugin  .uproject

    其中.uproject引入Plugins插件这种模块的方式是,插件是一种特殊的模块

    project下的插件模块

    .Target.cs

    关于模块说明详情请看/Engine/Source/Runtime/Projects/Public/ModuleDescriptor.h

    Projects | Unreal Engine Documentation

    Name:模块名

    LoadingPhase:ELoadingPhase::Type | Unreal Engine Documentation

    Type:EHostType::Type | Unreal Engine Documentation

    AdditionalDependencies:运行该项目所必需要的模块


    Build相关配置快速查找:

    .target.cs

    目标 | 虚幻引擎文档

    .build.cs

    模块 | 虚幻引擎文档

    编译配置 | 虚幻引擎文档

    相关文章

      网友评论

          本文标题:UE4 C++模块化编程

          本文链接:https://www.haomeiwen.com/subject/kklgyhtx.html