自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 UE4工程编译:没有访问 UnrealHeaderTool 的权限

在某台打包机上,尝试打开Editor去查看问题,结果发现 UHT 没有访问权限,下面是一些表现:在WINDOWS Batch 命令行中,直接运行它的时候,会提示 Access Denied。尝试过的方法有:重新编译AutomationTool、AutomationToolLauncher、UBT如下图:尝试过 重新编译、重启、generate、setup 后,依然存在问题:查看文件发现无权限:(图8)

2025-09-11 15:43:03 186

原创 Rider中的Run/Debug配置对应的本地文件

当Rider工程损坏需迁移Run/Debug配置时,可在本地路径.idea/workspace.xml文件中找到配置信息。该文件包含详细的配置参数,如项目路径、平台设置、启动选项等。通过复制这些配置内容,可将其迁移至新工程中,确保调试环境的一致性。示例展示了"CppProject"类型的配置细节,包括DevelopmentEditor模式、Win64平台等关键参数。

2025-09-11 11:07:07 143

原创 理解UE4中C++17的...符号及enable_if_t的用法及SFINAE思想

这段C++17代码展示了一个模板函数FCompositeBuffer的实现细节,重点解析了模板元编程技术。代码通过可变参数模板(BufferTypes...)接收多个缓冲区类型,使用std::conjunction进行编译时类型检查(CanAppendBufferType),并利用std::enable_if_t实现SFINAE机制。函数内部通过if constexpr进行编译时条件判断,使用折叠表达式(...)展开参数包处理缓冲区,最后移除空缓冲区。代码演示了C++17在模板元编程、编译时计算和参数包处理

2025-09-05 20:45:37 445

原创 UE4 Mac构建编译报错 no template named “is_void_v” in namespace “std”

文章摘要:在UE4跨平台开发中遇到Mac构建报错"no template named 'is_void_v' in namespace 'std'",而Windows平台正常。经分析发现,Mac的libc++标准库仅在C++17及以上版本才定义is_void_v,而Windows的MSVC实现无此限制。通过对比标准库源码发现,Mac的is_void_v定义在__type_traits/is_void.h中且受_LIBCPP_STD_VER版本控制,而Windows的type_traits

2025-09-05 15:03:43 956

原创 UE4 Mac构建编译报错 no member named “disjunction” in namespace “std”

在iOS编译过程中遇到std::disjunction未定义错误,原因是Mac构建机未配置_LIBCPP_STD_VER宏。通过分析Windows和Mac下的实现差异发现,disjunction是C++17引入的模板元函数,用于编译期类型特性的逻辑或运算。最终解决方案是针对iOS平台改用std::_Or替代std::disjunction,通过条件编译实现兼容性。该问题揭示了不同平台下C++标准库实现的差异,特别是与C++17特性相关的条件编译处理。

2025-09-05 14:41:50 749

原创 UE4 UAT 的六大流程 build cook stage pacakge archive deploy 与UAT的参数

本文解析了虚幻引擎自动化工具(UAT)的常用命令参数及其功能流程。重点介绍了-build和-compile的区别:前者控制代码编译为可执行文件,后者管理着色器资源的Cook编译。详细说明了-stage(暂存)和-archive(归档)的作用差异:暂存是打包前的中间步骤,归档则是最终产物的保存分发。文章还梳理了从Build、Cook到Package的完整流水线,解释了打包(.pak)和部署(-deploy)的具体职责,帮助开发者理解UE4自动化构建的底层机制和参数间的依赖关系。

2025-09-04 21:01:13 694

原创 UE4调试UAT时为何断点不了BuildCookRun的部分代码

本文分析了在UE4开发中使用UAT调试BuildCookRun命令时,部分C#代码无法断点调试的原因。通过代码追踪发现,BuildCookRun实际由UAT调用UBT(UnrealBuildTool)执行编译等操作,编译步骤属于UBT的功能范畴而非UAT。因此需要直接调试UBT程序才能跟踪代码编译过程,文中给出了相关调用堆栈和执行流程说明,并提供了UBT调试的参考文章链接。

2025-09-04 19:55:06 960

原创 UE4 Rider调试时添加自定义命令行参数

2、输入自定义的参数,如下图的例子是输入 -dx12 -norhithread ,然后Apply并OK。1、打开 Rider 右上角,针对你的项目(例如叫做“Mini”)打开 Edit。3、开始调试(虫子按钮)

2025-09-04 12:21:29 187

原创 UE4 Rider如何直接调试PC DebugGame

1、用UBT 打了一个exe的包,打开时遇到崩溃,想获知这个崩溃时的中间信息,例如材质信息,于是我直接双击 打包位置下的崩溃dmp文件 (MyGame/Saved/Archived/WindowsClient/MyGame/Saved/Crashes/....dmp) 去查看堆栈。堆栈虽然看得到,但是很多中间变量都没有了。2、由于崩溃发生得很快,我没有办法用Rider去Attach它,AI建议我再在代码中添加一段延时方法,如下:// 在代码的合适位置添加,例如BeginPlay开始时。

2025-09-03 16:31:14 299

原创 UE4 CPP文件中无法解析的外部符号

2>Module.Engine.44_of_55.cpp.obj: Error LNK2001 : 无法解析的外部符号 "private: static class TArray<struct FShaderErrorWatcherCache,class TSizedDefaultAllocator<32> > ShaderErrorWatcher::Caches" (?

2025-09-01 19:37:38 200

原创 UE4遇到报错: Casts.h(413): Error C4541 : “dynamic_cast”用在了带 /GR- 的多态类型“tiny_dnn::node”上

2>Casts.h(413): Error C4541 : “dynamic_cast”用在了带 /GR- 的多态类型“tiny_dnn::node”上;可能导致不可预知的行为。

2025-09-01 19:35:47 197

原创 UE4编译报错:Unable to instantiate module ‘MyGameSDK‘: System.NullReferenceException: 未将对象引用设置到对象的实例

编译报错:2>UnrealBuildTool: Error : Unable to instantiate module 'MyGameSDK': System.NullReferenceException: 未将对象引用设置到对象的实例。在 MyGameSDK..ctor(ReadOnlyTargetRules Target) 位置 g:\ST6\MyGameMSource\Plugins\MyGameSDK\Source\MyGameSDK\MyGameSDK.Build.cs:行号 55。

2025-08-28 14:20:56 408

原创 UE4编译遇到报错:无法将“obj\Development\UnrealBuildTool.exe”复制到 “Binaries\DotNET\UnrealBuildTool.exe”

在UE4编译工程时,遇到下面问题:无法将“obj\Development\UnrealBuildTool.exe”复制到“..\..\..\Binaries\DotNET\UnrealBuildTool.exe”。1000 毫秒后将开始第 10 次重试。文件“..\..\..\Binaries\DotNET\UnrealBuildTool.exe”正由另一进程使用,因此该进程无法访问此文件。

2025-08-28 14:12:57 318

原创 UE4编译时遇到: Error C4668 : 没有将“_WIN32_WINNT_WIN10_RS1”定义为预处理器宏,用“0”替换“#if/#elif”

开发过程中突然出现编译错误,主要涉及Windows预处理器宏未定义和成员函数缺失问题。经过多次尝试(包括回退代码、重装SDK、全量更新等)仍无法解决。最终发现问题根源:1) Perforce还原时未删除新增文件;2) IDE自动添加了不相关的D3D11头文件。解决方案:1) 启用Perforce 还原前警告 设置;2) 警惕自动添加的头文件。临时方案是重建工程,彻底解决需注意版本控制设置和代码审查。

2025-08-28 12:02:48 385

原创 UE4生成Target文件

在UE4中遇到"Couldn't find target rules file"报错是因为缺少Client的Target文件。解决方法:1. 创建MyMiniGameClient.Target.cs文件,设置Type=TargetType.Client,添加主模块名;2. 配置客户端特定选项如日志功能;3. 重新生成项目文件并编译。该问题通过添加正确的客户端目标规则文件即可解决。

2025-08-26 15:21:56 707

原创 UE4如何在本地编译Linux代码

{游戏名}Server Linux Development G:\St\{游戏路径}.uproject -waitmutex -log=C:\MyLinux.log。三、点Rider的三角形播放按钮(编译)。查看是否有编译问题。

2025-07-02 15:20:28 260

原创 如何使用VS中的Android Game Development Extension (AGDE) 来查看安卓 Logcat 日志

假如打开时遇到如下报错,则说明第一步骤中的JDK 没有安装好,设置好JDK的环境变量(例如 setx JAVA_HOME C:\android_build_tools\jdk-11.0.17 )重启VS,重新打开,就可以发现能打开了。一、首先按照该指引 中的 第1、2步骤,安装一下 AGDE ,AGDE 的安装包可以在官网上找到。在这其中的过滤框里填写过滤的内容,就可以查看安卓手机中的事实日志了。在执行第二步骤前,记得让你的PC连接安卓手机,并记得打开开发者模式。

2025-03-26 16:37:49 568

原创 UE4原生的增量Cook原理

UE4增量Cook

2025-01-16 11:05:21 476

原创 源码理解 UE4中的 FCookStatsManager::FAutoRegisterCallback RegisterCookStats

首先,RegisterCookStats是一个全局(非静态)变量,它的类型是 FCookStatsManager::FAutoRegisterCallback ,它调用的初始化器是 ( []()... ) ,也就是说,传入了一个lambda函数,作为初始化器的参数。

2024-12-31 15:22:10 655

原创 形象地理解UE4中的数据结构 TLinkedListBase

大家都熟知链表,但不一定能快速看懂UE4中的数据结构。TLinkedListBase表示“链接”中的一个结点,有三个成员:一、ElementType Element;表示具体的业务,例如int链条中的一个整数。二、NextLink 表示 “下一个Node”,这是一个指向“下一个Node” 的指针,也非常好理解。三、PrevLink 表示 “前一个Node” 的 “NextLink”,这是一个指针,它指向的是 “前一个Node” 的 “NextLink” 成员。

2024-12-31 10:35:43 1182

原创 UE4 编译报错 “Error LNK2019 : 无法解析的外部符号” 一种可能的原因

CookBegin_AssetPacker_GenPakConfig_TimeSec@DetailedCookStatsExtern@@2NA),函数 "public: void __cdecl UAssetPackerEditorManager::GeneratePakConfig(void)" (?这个变量它是 class 中的 static double ,并且没有为它做初始化。在UE4中,需要始终为类静态成员做初始化。有的博客说C++ 类静态成员会有默认初始化(为0),但对于UE4来说不是合适的。

2024-12-28 10:12:35 446

原创 Rider显示UE4引擎、项目 “load failed” 的解决方法

打开rider遇到下图的问题。清理了Intermediate后,并且 setup、generate project files 后,依然有问题。对项目文件 MyProject.uproject 右键switch引擎时发现,选择的引擎并不正确。因此需要switch!

2024-12-20 16:59:29 581

原创 XCode Build时遇到 .entitlements could not be opened 的问题

在构建成功的XCode工程上,手动打开XCode并Build,遇到以下问题:打开这个位置发现,文件确实不存在,只存在一个 {项目}Client.entitlements 的文件。因此,联想到,应该是当前的scheme选择地不对,应该构建出 {项目名}Client,而非构建出 {项目名}。

2024-11-21 17:03:22 1942

原创 UE4 iOS Package的过程与XCode工程中没有游戏Content的原因

我观察XCode工程时,没有看到包含游戏Content或Content的Pak,为此研究代码。

2024-11-20 21:04:58 1151 1

原创 UE4 Cook 从UAT传递参数给UE4Editor

如果我想要给它添加一个开关 -DisableCookAssert,并传递给UE4Editor(cpp)中,应该怎么添加?怎么传递呢?

2024-11-12 14:40:04 1202

原创 UE4安卓Gradle工程中的libUE4.so的生成原理

探究了UE4安卓Gradle工程中的libUE4.so的生成原理

2024-11-02 17:05:27 2057

原创 UE4安卓打aab包时,同时存在“gradle”、“arm64/gradle”两个Gradle工程的原因

解释了 UE4安卓打aab包时,同时存在“gradle”、“arm64/gradle”两个Gradle工程的原因

2024-10-29 16:43:25 993

原创 谷歌新安装包文件形式 .aab 在UE4中的打包原理

本文学习了aab的基本概念以及UE4中产生aab的构建原理。

2024-10-17 16:39:27 1530

原创 UE4中 -skipbuild -nocompile 有什么区别

在项目开发中,我看到了在调用 Engine\\Build\\BatchFiles\\RunUAT.bat 相关的命令行中,有 -skipbuild、 -nocompile 两个很像的参数,于是想探究一下它们的区别与含义。

2024-09-26 16:23:04 1129

原创 UE4 使用AndroidGameDevelopmentExtension(AGDE)对安卓客户端做“断点调试”与“代码热更”

主要介绍了如何通过AndroidGameDevelopmentExtension工具、Visual Studio 2022来进行安卓包调试。

2024-08-30 17:51:59 2095

原创 打开plist中的MetalCaptureEnabled开关并重签名IPA

【代码】打开plist中的MetalCaptureEnabled开关并重签名IPA。

2024-08-27 20:06:36 270

原创 UE4 BuildCookRun中的Archive的含义

在UE4中,Archive、Cook、Stage、Package、Build的次序是怎么样的?整体打包过程如下: Build -> Cook-> Stage -> Package -> Archive。其中,Archive 的含义是从Staged目录中拷贝文件到一个额外的目录即Archive目录。被称为“归档”。

2024-08-26 21:09:24 796

原创 在Mac上打开UE4Editor

使用如下命令在Mac机器上编译Mac的UE4Editor:其中 -buildscw 表示编译ShaderCompileWorker。编译后,很可能 Binaries/Mac/UE4Editor.app 是打不开的,因为各种插件等的原因。在Intermediate中找到XCode工程,打开XCode工程。将 Generate Info.plist File 开关打开:`Info.plist` 文件对于应用程序的运行至关重要,因为它告诉系统如何处理和展示应用程序。

2024-08-26 11:23:14 1285

原创 IDB的安装与使用

众所周知,ADB是安卓命令行调试工具。Facebook开发了一个给iPhone使用的类似工具,叫做IDB。下载附件(见我本文绑定的资源)到一个合理的路径下,并运行其中的 registry.bat。

2024-08-24 11:52:13 1648

原创 当外接硬盘接入到macOS上,只读不可写时,应当格式化

APFS(Apple File System)是苹果公司开发的一种现代文件系统格式,用于macOS、iOS、watchOS和tvOS等操作系统中。APFS文件系统支持文件名长达255个字符,支持大容量的硬盘和大文件,最大支持的文件大小为8EB(1EB=1024PB),最大支持的分区大小为9ZB(1ZB=1024EB)。当windows磁盘格式例如 NTFS 的硬盘接入到macOS上时,会发现无法新建文件夹,无法删除、重命名。,然后对磁盘进行格式化(右上角的“抹掉”按钮),选择APFS。

2024-08-24 09:40:00 878

原创 UE4中的 USE_ANDROID_JNI 宏

在引擎代码中看到上面的宏定义,其中USE_ANDROID_JNI表示的是是否使用安卓JNI。而上一篇文章介绍了为什么在打包安卓时,会包含这个文件。

2024-08-23 16:36:01 906

原创 UE4编安卓时Core模块为何只include Android文件夹?

Core模块是整个引擎中最核心的模块。几乎UE4中的每个其他模块都导入Core。

2024-08-22 20:03:47 917

原创 UE4安卓编译 UBT fails with “ERROR: GetBuildPlatform: No BuildPlatform found for Android” 的解决方案

对项目再次执行 GenerateProjectFiles,重新打开Rider,就可以看到上图中的Platform中的“Android”平台了。此时即使重启电脑,也看不到下面的Platform中的“Android”平台。在网上或通过其它渠道下载你的工程所需要的SDK、JDK。安装的脚本如下,其中设置环境变量是关键。

2024-08-21 16:48:13 307

原创 UE4 基于替换Exe方式的代码热更

在项目开发的版本迭代中,在PC包中,通过exe替换的方式 ,可以偷梁换柱,快速验证自己的代码。

2024-08-02 17:02:48 835

原创 UE4 如何获取Build.version版本号

接下来我们寻找Response文件。

2024-07-31 16:39:42 1447

“IDB 解压可用的程序 由Facebook开发”

“IDB 解压可用的程序 由Facebook开发”

2024-08-24

空空如也

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

TA关注的人

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