
ue4
文章平均质量分 79
Cheng游戏开发
这个作者很懒,什么都没留下…
展开
-
UBT是如何处理Target.cs和Build.cs的?-Unreal4源码拆解-UnrealBuildTool功能流程解析
UBT是如何处理Target.cs和Build.cs-Unreal4源码拆解-UnrealBuildTool功能流程解析专栏链接知乎专栏:UBT源码解析功能漫谈我们项目和引擎里面的每个模块都有build.cs,我们的项目本身有Target.cs,UE4是如何处理这两种文件呢?UBT会把两种文件编译到DLL里面。不管是项目还是引擎,DLL都在Intermediate\Build\BuildRules在内存里面是如何组织的呢?对每一个Build.cs,UBT会在内存中创建一个ModuleR原创 2021-12-21 00:11:50 · 1796 阅读 · 1 评论 -
图解最终构建的项目是以什么形式在UBT内存中保存的?UnrealBuildTool功能流程解析-Unreal4源码拆解
Unreal4源码拆解UnrealBuildTool功能流程解析TargetDescriptor构建对象描述类概述TargetDescriptor 构建目标的描述信息保存了构建一个UEBuildTarget所需要的所有信息创建方式:用于该项目依赖的项目,这些项目需要在主项目之前编译时候进行编译会为这些需要提前编译的项目创建TargetDescriptor调用public static TargetDescriptor FromTargetInfo(TargetInfo Info)原创 2021-12-16 23:46:01 · 702 阅读 · 0 评论 -
UnrealBuildTool的如何处理构建平台配置文件BuildConfiguration.xml-Unreal4源码拆解-UnrealBuildTool功能流程解析
UnrealBuildTool的如何处理构建平台配置文件BuildConfiguration.xml-Unreal4源码拆解-UnrealBuildTool功能流程解析前言处理构建平台配置文件在实例化ToolMode之前找到ToolModeOptions.XmlConfig标记位后开始解析如图主要步骤先找到所有配置文件。再找到配置文件的生成的二进制缓存文件(可自己指定)。缓存文件新,会把新值写入配置文件。配置文件新,重新生成缓存文件。通过xmlScheme验证配置文件正确性。设置原创 2021-12-14 19:16:03 · 812 阅读 · 0 评论 -
UBT中的构建平台管理工具类UEBuildPlatform-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析UBT中的构建平台管理工具类UEBuildPlatform前言UEBuildPlatform 是一个工具类,静态内容 包含了 所有注册平台的组织和构建平台信息等等 以及 相关处理函数。同时也是一个基类。以此作为 基类拓展出了很多子类,均在Engine\Source\Programs\UnrealBuildTool目录下子类根据平台建立,主要增加保存了 对应平台 的 SDK相关信息和处理函数Platform\Android\U原创 2021-12-12 00:44:58 · 715 阅读 · 0 评论 -
UnrealBuildTool的构建平台注册流程-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool的构建平台注册流程前言构建平台的注册流程会在 ToolMode 实例化 之前进行,根据ToolMode子类 的类型标志位,来进行不同方式的构建平台注册。源代码精简以后如下:可见是3种方式, if((ModeOptions & ToolModeOptions.BuildPlatforms) != 0) { UEBuildPlatform.RegisterPlatforms(false原创 2021-12-10 11:58:01 · 668 阅读 · 0 评论 -
UnrealBuildTool的UnrealPlatformGroupUnreal4-源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool的UnrealPlatformGroup前言我们构建的目标组织类,其实就是由一个名称和一个ID组成在UEBuildPlatform类中保存了Dictionary<UnrealPlatformGroup, List<UnrealTargetPlatform>> PlatformGroupDictionary也是意味着一个组织UnrealPlatformGroup可以对应多个平台原创 2021-12-09 17:39:08 · 217 阅读 · 0 评论 -
UnrealBuildTool的UnrealTargetPlatform-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool的UnrealTargetPlatform前言我们构建的目标平台类,其实每个平台的目标平台类实例就是由一个名称和一个ID组成与UniqueStringRegistry强耦合,UniqueStringRegistry可以看:本人写的UniqueStringRegistry介绍类 public partial struct UnrealTargetPlatform成员变量private int Id;原创 2021-12-09 16:28:36 · 656 阅读 · 0 评论 -
UniqueStringRegistry-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-UniqueStringRegistry引擎版本4.274.2x功能不会差太多主要功能概括UniqueStringRegistry类,如其命名,独特的字符串注册表。功能上大致是可以保存一系列独特的字符串,并且按照他们的加入顺序,给其索引一个ID值 。与构建平台注册模块密切相关。(“Win64”,"Mac"等等)主要成员变量private Dictionary<string, int> StringToI原创 2021-12-08 23:34:54 · 179 阅读 · 0 评论 -
ModuleDescriptor-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-ModuleDescriptor引擎版本4.274.2x功能不会差太多主要功能概括ModuleDescriptor类,如其命名,模块描述信息。功能上大致是以JSON的方式读取和更新 .uplugin文件 。具体设计上类内变量名和JSON中项名相同。 注意:可读可写 .uplugin文件首先.uplugin文件文件是JSON文件,在每个插件的主文件夹中描述插件信息的文件。举例:Engine\Plugins\Ani原创 2021-12-08 19:14:20 · 441 阅读 · 0 评论 -
UnrealBuildTool的RulesScope-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool的RulesScopeRulesScope类介绍功能漫谈RulesScope类,如其命名,规则范围,功能上大致是记录一下模块/文件之间引用关系。本人更倾向于模块,其实Unreal里面模块之间用文件夹区分的很明白。模块之间会以单向树形结构延伸namespace UnrealBuildTool{ class RulesScope { public string Name;原创 2021-12-06 22:59:24 · 128 阅读 · 0 评论 -
PluginReferenceDescriptor-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-PluginReferenceDescriptor引擎版本4.274.2x功能不会差太多主要功能概括PluginReferenceDescriptor类,如其命名,引用插件的描述信息。功能上大致是以JSON的方式读取和更新 .uplugin文件 的部分内容。具体设计上类内变量名和JSON中项名相同。描述内容为"Plugins": [ { "Name": "LiveLink", "Enabled":原创 2021-12-06 22:47:54 · 334 阅读 · 0 评论 -
Plugin工具类-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-Plugin4.2x功能不会差太多主要功能Plugin静态类,功能上大致是一个工具类,根据文件夹保存了每个加载过的插件信息和.uplugin引用。笔者大胆猜测,其实Unreal官方自己很多插件是没有开源的,所以在UBT中空有大量的完整的流程,但是没有文件。静态成员数据static Dictionary<DirectoryReference, List> PluginInfoCache按照根文件夹记录加载过的插原创 2021-12-06 12:00:21 · 438 阅读 · 0 评论 -
PluginDescriptor-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-PluginDescriptor原创 2021-12-03 23:40:30 · 635 阅读 · 0 评论 -
UnrealBuildTool的RulesScope-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool的RulesScope原创 2021-12-03 21:43:30 · 238 阅读 · 0 评论 -
UnrealBuildTool主流程中的ToolModeOptions解析-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool主流程中的ToolModeOptions解析前置工作主流程:https://zhuanlan.zhihu.com/p/438562865在 UnrealBuildTool 主流程里面,会根据命令行参数切换 3 种 ToolMode 子类默认 BuildMode-clean 对应了 CleanMode-ProjectFiles 等等其他一些参数对应了 GenerateProjectFilesMod原创 2021-11-28 19:28:09 · 298 阅读 · 0 评论 -
UnrealBuildTool主流程-Unreal4源码拆解-UnrealBuildTool功能流程解析
Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool主流程前置工作需要下载 Unreal4 的 C++ 源代码源码目录在 UnrealEngine\Engine\Source\Programs\UnrealBuildTool文件为UnrealBuildTool.csUBT的主类所在位置,也是main函数的入口。下面以一张图来概括UBT所做的工作篇幅受限黄色部分会单独写文章解析全局配置参数详解静态类 UnrealBuilTool 下面的变原创 2021-11-27 23:05:43 · 657 阅读 · 0 评论 -
UE4(虚幻4)中的TSignedIntType 和 TUnsignedIntType
TSignedIntType 和 TUnsignedIntType作者:PP屁屁用途TSignedIntType用来根据字节数,传出自己想要的int类型TUnsignedIntType用来根据字节数,传出自己想要的unsigned int类型目的基于不同平台的C++运行库相关的API进行封装,以下为Windows举例C++运行库底层确实对 不同位数 的数据给予了不同的 APIUnreal 对其做了 跨平台的封装位于 intrin0.inl.h 文件 150行原创 2021-08-22 12:40:38 · 299 阅读 · 0 评论 -
UE4中的 TIsIntegral 和 TIsVoidPointer
UE4中的 TIsIntegral 和 TIsVoidPointer作者: PP屁屁TIsIntegral/** * Traits class which tests if a type is integral. */template <typename T>struct TIsIntegral{ enum { Value = false };};template <> struct TIsIntegral< bool>原创 2021-08-20 16:18:12 · 169 阅读 · 1 评论 -
UE4资源加载,持续更新中
在项目推进中,有很多种获取资源的需求需要我们处理。需求举例:例如:1.我们需要处理C++父类的派生蓝图资源。因为蓝图类有自己的配置,没办法直接用StaticClass直接使用蓝图子类。2.我们需要在C++中获取资源相关的meta数据。当然,我们可以用staticLoad等等,这些我就在文章中说一下。解决办法:资源的简单关系:真实的关系很复杂,在此一定要区分...原创 2020-01-10 18:10:26 · 1531 阅读 · 0 评论 -
UE4 Actor遍历的几种方式(如果有纰漏会更新)
在实际使用中我们可能会用到UE4遍历场景中的Actor。注意:1.不要在构造函数中遍历。2.如果涉及到RPC和属性复制,一定是在第一次复制完成后再进行遍历,防止role没同步过来。3.写在构造函数里可能会为空GetWorld();for(TActorIterator<AActor>Iterator(GetWorld());Iterator;++Itera...原创 2020-01-10 11:42:44 · 4268 阅读 · 0 评论 -
UE4模块系统详解
转载注明出处UE4如何组织模块?ue4的模块组织是一个相对复杂的工作,这边博文会依照部分源代码进行讲解。UE4中文件组织模块的主要描述文件有以下几种:1.插件描述文件,Json,以.uplugin结尾2.项目描述文件,Json,以.uproject结尾关于这两个文件有两项需要说一下加载模块的适用场景(Type)namespace EHostTyp...原创 2019-11-19 14:37:33 · 8593 阅读 · 1 评论