哈喽,大家好,我叫人宅,今天和大家介绍一下本套教程,个人是极力推荐本套教程,因为本套教程将会让您对UE4引擎有更深刻的理解,最重要我们不仅会讲解理论还会实践,让知识和例子相结合。
如果您彻底搞定了这一块知识,将会给您带来多个福利,第一个福利您的水平将进入UE4高手行列。如果您对高手这个字眼不感兴趣,这套教程还会给您带来第二个福利,会让您的薪资有巨大的提升,注意不是小幅度提升,是巨大的提升。
教程地址:UE4编辑器开发进阶(UE4编译原理反射原理蓝图系统原理)
UE4编辑器开发进阶反射与蓝图
我们先大概介绍一下这套教程里面会有什么内容。
第一个内容是开发蓝图编辑器,比如蓝图节点开发蓝图逻辑开发,虚拟机开发,最重要的是理解字节码是如何被生成和使用的,还有我们的UBT和UHT的开发,我们可以不依赖UE4直接生成反射代码,我们对这块会有丰富的案例进行实战,不用担心自己学不会。
第二个内容是对UE4反射数据理解更加深刻,我们会详细讲解UE4反射数据,并且教会大家如何使用这些反射数据在我们的编辑器开发中。
第三个内容我们会讲解引擎初始化,我们会对着UE4引擎代码讲解,从Winmain开始,一点点讲解,这一块代码有上万行左右,我们会带着大家过一遍,知道UE4在加载百分之几是代表着处理什么内容。这一块掌握对我们以后排查问题有着巨大的作用,我们完全不需要看源码就能锁定问题可能是出在了哪里。
第四个内容我们会讲解蓝图编译原理,从蓝图开始编译的代码讲起,这块代码保守估计有上万行左右,我们会为大家讲解UE4蓝图编译的十五个阶段,带着大家把蓝图编译原理过一遍。
第五个内容我们会讲解如何用蓝图的UMG,开发我们的编辑器。
这个就是我们这套教程主要给大家讲解的内容,如果您掌握这些知识,对面试有着极大益处。
我们的一向的原则是在短时间内让您听明白,知道应该怎么做。
说了这么多我们来正式介绍一下本套教程的章节:
第一章 蓝图前端设计开发
这一章我们会教会大家如何设计蓝图编辑器系统框架,比如蓝图节点设计,蓝图连线的设计以及连线的算法,pin的样式设计等,学完这一章您将会自己搭建蓝图编辑器系统框架。
第二章 反射数据系统
这一章我们会讲解UE4类的反射数据,比如继承Actor类的,结构体,枚举,接口,以及蓝图虚拟机原理,蓝图函数执行原理,数据位运算等。了解这一块对我们开发自己的蓝图系统有非常重要的作用。
第三章 蓝图编译原理剖析
这一章的内容比较多,代码量也比较大,也是非常核心的一章节,这一章我们会讲解蓝图编译的十五个阶段,如何编译我们的类以及函数,我们会带着大家一点点理解Ue4是如何将我们的蓝图编译成字节码。我们也整理一套图,这个图里面浓缩着UE4编译的十五个阶段,这个图在我们的工程文件里面。这一章的内容将为我们开发蓝图虚拟机有着巨大指导 作用。
第四章 如何利用反射写代码
这一章我们开始利用反射知识在来 为 我们进行实战,比如我们如何通过地址直接访问成员并且修改成员,这个对我们开发编辑器非常有用,因为可以解耦合。当然我们还会讲解如何用C++调用我们以及编译好的蓝图代码,以及C++代码等
第五章 编辑器综合实战开发之环境搭建
这一章我们开始对蓝图开发进行实战的章节,我们会 在 这一章 节搭建一套完整的蓝图编辑器系统,比如蓝图的Palette列表 Details列表等。
第六章 编辑器综合实战开发之搭建蓝图虚拟机
这一章我们开始实战我们的蓝图编译,这一章节将是我们的核心章节,我们会带着大家一点点写虚拟机编译代码,比如搜索所有蓝图节点,剔除 孤立节点,将这些节点生成对应字节码,编写我们的UBT和UHT工具,收集类信息,生成UE4反射代码。最终由我们的蓝图调用并且执行。除了讲解蓝图编译我们还会讲解如何渲染缩略图,如何拖拽蓝图资源,如何将反射知识在我们的编辑器开发中,以及定义各种自适应的类型pin
第七章 UE4引擎初始化
这一章会讲解UE4引擎是如何初始化的,我们会从WinMain开始讲起,带着大家将UE4引擎初始化代码过一遍,清晰的了解UE4是如何加载模块,如何加载UObject,如何进行静态注册我们的类的,如何利用我们的反射数据等,使我们的知识得到贯通,不仅知道我们的反射数据也知道我们的反射数据如何调用,还知道它是如何注册的等,我们还会讲解UE4在不同百分比下UE4正在干什么,这个对我们以后锁定问题有非常重要的作用。
第八章 用蓝图UMG开发编辑器
这一章我们会讲解UE4最新功能,用UMG开发编辑器,如何开发,以及分析这套工具能做什么和不能做什么等。
这套教程 您学完后能获得什么?
明白 UE4是如何编译蓝图,理解UE4反射数据具体是啥,并且会定制反射数据,制作UBT和UHT工具帮助我们生成自定义的反射数据代码,理解如何将这些反射数据注册到类里面,可以自由开发蓝图编辑器系统,可以自定义自己的语言脚本,可以为UE4进行扩展,定制各种各样的脚本插件等。
教程使用的版本
我们使用的是UE4引擎4.21和4.22.内容讲解以4.21为准,图表和UMG开发编辑器以4.22为准。VS使用的是2017.
以下是我们的目录
第一章 蓝图前端设计开发
1-1搭建简单的蓝图状态机
1-2实现蓝图节点菜单和蓝图节点连接
1-3自定义蓝图连接代理样式
1-4自定义蓝图Node样式
1-5自定义蓝图Pin样式
1-6编写蓝图pin与pin之间的连接算法
1-7设计排布蓝图Pin
1-8蓝图Node和Pin的扩展
1-9 通过工厂解耦和
1-10蓝图前端总结
第二章 反射数据系统
2-1类反射数据展开
2-2类反射数据注册
2-3蓝图虚拟机原理
2-4构造蓝图函数和以及函数注册
2-5蓝图入口 ProcessEvent
2-6结构体反射数据分析
2-7变量反射信息的注册
2-8枚举反射与数据热更新
2-9接口反射数据与位运算
2-10反射总结
2-11UClassUStructUFieldUObjectBase基础类讲解
第三章 蓝图编译原理剖析
3-1蓝图编译的十五个阶段
3-2UBlueprintUFuntion等基础类讲解
3-3FKismetCompilerAndFunctionContext等基础讲解
3-4UE4 蓝图编译阶段前的准备
3-5UE4 蓝图编译第一阶段到第二阶段
3-6UE4 蓝图编译第三阶段到第七阶段
3-7UE4蓝图编译第八阶段重构函数与变量
3-8UE4 蓝图编译第八阶段重新编译依赖象
3-9蓝图编译第九阶段到第十二阶段
3-10蓝图编译第十二阶段构建蓝图的成员变量
3-11创建函数子列表与函数预编译第一阶段
3-12函数预编译阶段
3-13函数编译第二阶段整合语句
3-14编译蓝图为字节码
3-15第十四到十五阶段编译收尾
第四章 如何利用反射写代码
4-1利用反射捕获特定类型
4-2利用反射捕获类成员
4-3探讨成员变量的内存布局
4-4UE4中利用地址偏移对变量的操作
4-5ObjectHash里面常用函数
4-6利用反射调用无参函数
4-7利用反射调用有参函数
4-8利用反射调用任意参函数
第五章 编辑器综合实战开发之环境搭建
5-1 搭建资源编辑器
5-2 搭建编辑器Viewport视口
5-3 编辑器布局
5-4 搭建蓝图Graph
5-5搭建Palette列表和Details列表
5-6添加蓝图节点到Palette列表内
5-7搭建自定义蓝图
5-8蓝图节点信息映射到Details
5-9蓝图节点拷贝与剪切版操作
5-10修复蓝图编辑器常见bug
5-11总结
第六章 编辑器综合实战开发之搭建蓝图虚拟机
6-1自定义反射元数控制变量
6-2蓝图数据的保存和还原
6-3利用反射读取代码实现自动化蓝图列表
6-4根据C++函数参数实现自适应样式蓝图pin
6-5命令映射映射编译和运行和帮助按钮
6-6蓝图节点修剪与函数编译
6-7序列化字节码和执行原理
6-8如何将函数和数据序列化为字节码
6-9如何执行压缩后的字节码逻辑
6-10搭建代码收集和反射数据生成框架
6-11代码类型收集
6-12代码数据生成
6-13自定义蓝图虚拟机实现HelloWorld打印
6-14实现蓝图取地址符操作
6-15实现蓝图返回值和纯节点操作
6-16实现蓝图函数可复用
6-17变量操作架构
6-18UObject变量赋值操作
6-19实现C++向蓝图通信
6-20通过蓝图代码将模型渲染到视口
6-21蓝图系统多情况测试与解决内存泄漏
6-22带参数的批处理启动UE4独立程序
6-23制作独立程序反射收集与生成
6-24通过批处理完成反射数据的生成和UBT代码刷新
6-25为节点添加渲染的缩略图
6-26向编辑器拖拽我们的资源
6-27实现多节点连接的pin
第七章 UE4引擎初始化
7-1引擎初始化
7-2PreInit_命令行启动相关程序和模块DLL加载
7-3UClass类型收集与延迟注册和线程池创建
7-4初始化UObject哈希表与引擎相关配置
7-5异步渲染Splash和渲染引擎初始化进度文本
7-6主线程向Splash线程通信
7-7ProcessNewlyLoadedUObjects
7-8引擎初始化到百分之八十
7-9引擎的最后初始化
第八章 用蓝图UMG开发编辑器
8-1GlobalBlutilityClassesAndTheBlutilityShelf
8-2ScriptedAction
8-3EditorUtilityWidget