自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 问答 (1)
  • 收藏
  • 关注

原创 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 1390 1

原创 图解最终构建的项目是以什么形式在UBT内存中保存的?UnrealBuildTool功能流程解析-Unreal4源码拆解

Unreal4源码拆解UnrealBuildTool功能流程解析TargetDescriptor构建对象描述类概述TargetDescriptor 构建目标的描述信息保存了构建一个UEBuildTarget所需要的所有信息创建方式:用于该项目依赖的项目,这些项目需要在主项目之前编译时候进行编译会为这些需要提前编译的项目创建TargetDescriptor调用public static TargetDescriptor FromTargetInfo(TargetInfo Info)

2021-12-16 23:46:01 632

原创 UnrealBuildTool的如何处理构建平台配置文件BuildConfiguration.xml-Unreal4源码拆解-UnrealBuildTool功能流程解析

UnrealBuildTool的如何处理构建平台配置文件BuildConfiguration.xml-Unreal4源码拆解-UnrealBuildTool功能流程解析前言处理构建平台配置文件在实例化ToolMode之前找到ToolModeOptions.XmlConfig标记位后开始解析如图主要步骤先找到所有配置文件。再找到配置文件的生成的二进制缓存文件(可自己指定)。缓存文件新,会把新值写入配置文件。配置文件新,重新生成缓存文件。通过xmlScheme验证配置文件正确性。设置

2021-12-14 19:16:03 612

原创 UBT中的构建平台管理工具类UEBuildPlatform-Unreal4源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析UBT中的构建平台管理工具类UEBuildPlatform前言UEBuildPlatform 是一个工具类,静态内容 包含了 所有注册平台的组织和构建平台信息等等 以及 相关处理函数。同时也是一个基类。以此作为 基类拓展出了很多子类,均在Engine\Source\Programs\UnrealBuildTool目录下子类根据平台建立,主要增加保存了 对应平台 的 SDK相关信息和处理函数Platform\Android\U

2021-12-12 00:44:58 548

原创 UnrealBuildTool的构建平台注册流程-Unreal4源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool的构建平台注册流程前言构建平台的注册流程会在 ToolMode 实例化 之前进行,根据ToolMode子类 的类型标志位,来进行不同方式的构建平台注册。源代码精简以后如下:可见是3种方式, if((ModeOptions & ToolModeOptions.BuildPlatforms) != 0) { UEBuildPlatform.RegisterPlatforms(false

2021-12-10 11:58:01 583

原创 UnrealBuildTool的UnrealPlatformGroupUnreal4-源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool的UnrealPlatformGroup前言我们构建的目标组织类,其实就是由一个名称和一个ID组成在UEBuildPlatform类中保存了Dictionary<UnrealPlatformGroup, List<UnrealTargetPlatform>> PlatformGroupDictionary也是意味着一个组织UnrealPlatformGroup可以对应多个平台

2021-12-09 17:39:08 181

原创 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 552

原创 UniqueStringRegistry-Unreal4源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析-UniqueStringRegistry引擎版本4.274.2x功能不会差太多主要功能概括UniqueStringRegistry类,如其命名,独特的字符串注册表。功能上大致是可以保存一系列独特的字符串,并且按照他们的加入顺序,给其索引一个ID值 。与构建平台注册模块密切相关。(“Win64”,"Mac"等等)主要成员变量private Dictionary<string, int> StringToI

2021-12-08 23:34:54 140

原创 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 351

原创 UnrealBuildTool的RulesScope-Unreal4源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool的RulesScopeRulesScope类介绍功能漫谈RulesScope类,如其命名,规则范围,功能上大致是记录一下模块/文件之间引用关系。本人更倾向于模块,其实Unreal里面模块之间用文件夹区分的很明白。模块之间会以单向树形结构延伸namespace UnrealBuildTool{ class RulesScope { public string Name;

2021-12-06 22:59:24 99

原创 PluginReferenceDescriptor-Unreal4源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析-PluginReferenceDescriptor引擎版本4.274.2x功能不会差太多主要功能概括PluginReferenceDescriptor类,如其命名,引用插件的描述信息。功能上大致是以JSON的方式读取和更新 .uplugin文件 的部分内容。具体设计上类内变量名和JSON中项名相同。描述内容为"Plugins": [ { "Name": "LiveLink", "Enabled":

2021-12-06 22:47:54 258

原创 Plugin工具类-Unreal4源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析-Plugin4.2x功能不会差太多主要功能Plugin静态类,功能上大致是一个工具类,根据文件夹保存了每个加载过的插件信息和.uplugin引用。笔者大胆猜测,其实Unreal官方自己很多插件是没有开源的,所以在UBT中空有大量的完整的流程,但是没有文件。静态成员数据static Dictionary<DirectoryReference, List> PluginInfoCache按照根文件夹记录加载过的插

2021-12-06 12:00:21 343

原创 PluginDescriptor-Unreal4源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析-PluginDescriptor

2021-12-03 23:40:30 527

原创 UnrealBuildTool的RulesScope-Unreal4源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool的RulesScope

2021-12-03 21:43:30 205

原创 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 233

原创 UnrealBuildTool主流程-Unreal4源码拆解-UnrealBuildTool功能流程解析

Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool主流程前置工作需要下载 Unreal4 的 C++ 源代码源码目录在 UnrealEngine\Engine\Source\Programs\UnrealBuildTool文件为UnrealBuildTool.csUBT的主类所在位置,也是main函数的入口。下面以一张图来概括UBT所做的工作篇幅受限黄色部分会单独写文章解析全局配置参数详解静态类 UnrealBuilTool 下面的变

2021-11-27 23:05:43 460

原创 C++对象内存模型探究模型

C++对象内存模型探究模型转载注明出处:https://www.zhihu.com/people/peng-cheng-17-51作者:Cheng游戏开发前言:C++的基于继承关系动态多态特性可以允许父子继承关系的类之间重写函数编译器会在存在虚函数的对象中塞入一个虚表指针,指向一个虚表表内装了我们们所重写的虚函数目的:探究虚表与虚函数在对象中的内存占用情况前置知识this指针的内部调整代码#include <iostream>#include <strin

2021-09-15 22:59:10 91

原创 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 264

原创 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 133 1

原创 MarkDown语法与数学公式详细用法整合。

MarkDown语法作者: 万里兄背景: 个人学习需要整理了网上一大坨文章,做了一个整合,需要的各位请自用取走基本语法标题语法一级标题二级标题最多只支持6级标题一级标题二级标题三级标题四级标题五级标题六级标题一级标题=============二级标题-------------最多只支持6级标题# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题字体样式字形状粗体的两种写法粗体粗体

2021-08-19 15:30:32 615

原创 C++高级-回调函数 超简单实现Demo

Mylib.h#pragma oncechar (*Call)(char a)=NULL;char s='s';void RunFun() { Call(s); }void Init(char (*IN_CallMain)(char a),char IN_M){ IN_CallMain(IN_M);}Main.cpp#include <iostream>#include "Mylib.h"//首先明确一个概念,不管是函数,变量,执行的时候C++无外乎一

2020-06-05 13:45:13 378

原创 C11-右值引用std::move移动语义和完美转发用法举例

SHOW_SMALL_FUNCTION_BLOCK_TIPS("右值引用") /* 这个是个小的Demo */ { class Test { public: Test() = default; int a; Test(Test&& temp)noexcept { cout << "执行移动构造函数" << endl;; cout << "执行ByeBye(temp);" <&lt.

2020-06-04 10:54:04 538

原创 C11-noexcept超简单范例

SHOW_SMALL_FUNCTION_BLOCK_TIPS("noexcept") { //关键字跟在函数后面,意思是不抛出异常 //正常情况下,vector如果在你自定义类对象增加时自增长,那么调用你的默认拷贝构造函数。 //如果你要进行优化在vextor的自增长时使用右值引用(移动)的构造函数 //那你就需要写一个这个函数,这个函数优先级比较高,会优先调用 //vector成长时会调用 class Test { int a = 0; int b = 0;.

2020-06-04 10:04:26 249

原创 C11-Lambda表达式速解

/*************************************************************************************************************** lambda表达式 ****************************************************************************************************************/ /* 匿名函数.

2020-06-03 11:14:05 524

原创 C11-decltype的用法超简单范例

//decltype主要作用是通过对象编译期推算获得类型,输入参数是对象/实例/变量名,返回一个类型。 //常用用法场景:通过auto 推算的声明的变量很多时候有很长一大串,咱们不太好写出变量类型, //可是又需要用刚才的auto类型声明其他变量 /* auto a=...........; decltype(a) b; */ //以lambda表达式的语法通过通过参数推算出返回值/* //编译不过去吧??!! template<typename T1,type.

2020-06-03 10:26:29 374

原创 C11-explicit关键字

explicit关键字SHOW_SMALL_FUNCTION_BLOCK_TIPS("explicit关键字") { //作用阻止编译器自动执行该函数 { class explicitTest { public: int a; explicitTest() :a(NULL) {} explicitTest(int In_a) :a(In_a) {} explicitTest operator+ (cons

2020-06-01 15:49:02 275

原创 C11-初始化列表

/*************************************************************************************************************** 2.参数初始化列表 ****************************************************************************************************************/ class...

2020-06-01 15:36:17 472

原创 C11-可变参数模板-Variadic Templates可变参数模板

/************************************************************************************** ************************* 1.Variadic Templates可变参数模板 ************************* *******************************************************************************.

2020-06-01 14:05:59 900

原创 如何自定义一个内存池?

目录我们先写个简单的第一版内存分配器:第二版第三版Alloctor第四版Alloctor我们先写个简单的第一版内存分配器://推进式单向链表操作 /* 分配24*size个内存空间 可以见图PreAlloctor */ class FirstAlloctor { public: FirstAlloctor(std::size_t x) :i(x) { } ~FirstAlloctor() { } std::size_t Get() {

2020-05-31 17:19:31 301

原创 如何用C++代码稳定判断64位还是32位系统(不使用任何宏定义,或者API)

情景最近碰到了这个问题,研究一下发现很有趣,如何用C++代码稳定判断64位还是32位系统? 看到这个问题有人可能会想,用64位或者32位系统字节数不一样的基本类型来判断不可以吗?答案是YES。很多人会想到long/unsigned long,其实这个是有问题的,无法做到稳定判断。windows的vs下万古不变4个字节,其他平台可能就是4/8字节(32/64位系统)。如何做到稳定判断?其实用指针计算是最好的,这里会用到二级指针,可以看看下面这个例子: { //简单小例子判断是64位系统还是

2020-05-31 17:03:14 1260

原创 内存分配基本用法

malloc/free的用法://malloc/free的用法 #pragma region { void* p_malloc = malloc(512); free(p_malloc); p_malloc = nullptr; } #pragma endregionnew/delete的用法 //new/delete的用法 ...

2020-05-31 16:54:58 154

原创 C++内存管理--码云地址Git

项目简介:本项目会一直进行更新,主要内容包括内存管理的相关知识,具体可以见https://gitee.com/MercyRedeemer_admin/MemoryManager.git另外:项目中具体内容会在博客中更新。

2020-05-31 16:34:53 117

原创 设计模式之TemplateMethod(Coding In UnrealEngine4)

TemplateMethod动机(Motivation) 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作 结构,但各个子步骤却有很多改变的需求,或者由于固有的原因 (比如框架与应用之间的关系)而无法和任务的整体结构同时实现。如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变 化或者晚期实现需求?模板方法模式的定义如下:定义一个操作中算法的框架,而将一些步骤延迟到...

2020-05-04 16:55:08 256

原创 C++ 设计模式 面向对象设计原则 相关概念介绍(结合UnrealEngine4)

C++ 设计模式 面向对象设计原则(1)相关概念介绍(结合UnrealEngine4)2020.5.4修订目录面向对象设计原则(1)依赖倒置原则(DIP)开放封闭原则(OCP)单一职责原则(SRP)该原则提出对象不应该承担太多职责,如果一个对象承担了太多的职责,至少存在以下两个缺点:单一职责原则的优点Liskov 替换原则(LSP)接口隔离原则(ISP)...

2020-05-04 14:49:58 523

原创 UE4资源加载,持续更新中

在项目推进中,有很多种获取资源的需求需要我们处理。需求举例:例如:1.我们需要处理C++父类的派生蓝图资源。因为蓝图类有自己的配置,没办法直接用StaticClass直接使用蓝图子类。2.我们需要在C++中获取资源相关的meta数据。当然,我们可以用staticLoad等等,这些我就在文章中说一下。解决办法:资源的简单关系:真实的关系很复杂,在此一定要区分...

2020-01-10 18:10:26 1470

原创 UE4 Actor遍历的几种方式(如果有纰漏会更新)

在实际使用中我们可能会用到UE4遍历场景中的Actor。注意:1.不要在构造函数中遍历。2.如果涉及到RPC和属性复制,一定是在第一次复制完成后再进行遍历,防止role没同步过来。3.写在构造函数里可能会为空GetWorld();for(TActorIterator<AActor>Iterator(GetWorld());Iterator;++Itera...

2020-01-10 11:42:44 3941

原创 UE4模块系统详解

转载注明出处UE4如何组织模块?ue4的模块组织是一个相对复杂的工作,这边博文会依照部分源代码进行讲解。UE4中文件组织模块的主要描述文件有以下几种:1.插件描述文件,Json,以.uplugin结尾2.项目描述文件,Json,以.uproject结尾关于这两个文件有两项需要说一下加载模块的适用场景(Type)namespace EHostTyp...

2019-11-19 14:37:33 7907 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除