自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UE4在MacOS上将Commit.gitdeps.xml设为Git LFS文件的潜在弊端

近期 Engine/Build/Commit.gitdeps.xml 添加到Git LFS文件后(操作过程见下文的方法1),出现了一个奇怪的问题——git 拉取后 Engine/Build/Commit.gitdeps.xml 成为3行的LFS指针文件,文件内容如图2,文件大小是133B ,导致后续的 git dependencies 失败,报错如日志3。这个问题只出现在iOS的构建机上。

2025-12-08 19:57:22 531

原创 UE4热更资源Pak

在 Saved 下例如 G:\MyGame\Saved\Cooked\WindowsClient\DeltaForce\Content 下的.pak ,推送到你的手机版本中的 {Game}/Saved/Paks 下,重启手机游戏APP。在日志中搜索此pak的名称,可以用于确认它mount成功。

2025-11-21 15:25:37 354

原创 如何使用 Process Explorer 查看多线程运行状态

首先是下载 微软的 Sysinternals (www.sysinternals.com)。安装后,打开 C:\SysinternalsSuite\procexp.exe ,并按下图操作。

2025-11-14 11:56:32 125

原创 UE4第二次构建时,引擎是否主动删除掉Saved/Cooked目录

文章摘要 在Unreal Engine 4项目中,当尝试通过修改配置剔除部分地图资源来减小包体积时,发现最终包体积依然很大。问题根源在于Saved/Cooked目录中的旧资源未被清除。关键发现: UE4构建系统默认会检测INI配置变更(IgnoreIniSettingsOutOfDate为false),若检测到变更则清除Saved目录 项目启用了IgnoreIniSettingsOutOfDate标志,导致即使修改了"NeverToCook"配置,系统也保留Saved/Cooked中的旧

2025-11-06 20:20:05 1018

原创 Git三路合并算法的弊端

当Git merge 两个分支F1和F2时,例如 将 F2 merge给 F1时,且F1和F2 的merge-base称为Base。BaseLocal(F1)含义结果AAA完全一致不是冲突,没有合并,保持现状: AAAB单边差异不是冲突,只是合并,结果是: BABB单边差异不是冲突,只是合并,结果是: AABC两边都变更了是冲突,要手动处理表格中,Remote 也就是 来客Incoming。Local 是 当前接受merge者,是当前分支。

2025-10-20 20:45:41 368

原创 UE4 iOS包遇到“无法安装,无法安装此APP,因为无法验证其完整性”

我手头有一个UE4工程,iOS 包打包成功,但是无法安装,提示:“无法安装,无法安装此APP,因为无法验证其完整性”

2025-10-20 20:20:25 419

原创 UE4 UBT如何只编译单个模块的cpp文件

摘要:本文介绍了一种绕过单个编译报错阻碍的方法,通过UBT并行编译多个模块。具体操作是在UBT编译选项中输入特定参数并选择"UnrealBuildTool"作为调试配置,启动调试后可在输出窗口查看报错信息。该方法将编译报错视为正常情况,能够实现模块的并行编译处理,提高开发效率。

2025-10-17 15:08:22 202

原创 UE4引擎GenerateProjectFiles时报错 The platform name x is not a valid platform name

在 Generate Project Files 时,报以下错误:ERROR: The platform name OpenHarmony is not a valid platform name. Valid names are (Win32,Win64,HoloLens,Mac,……,IOS,Android,……,Lumin,XXX)在 EngineSource\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs

2025-10-15 16:06:45 330 1

原创 UE4通过打开DumpShader开关查看ShaderError的引用路径

打开此开关后,Cook过程中,将会看到例如以下报错:Engine/Config/ConsoleVariables.ini 中,将;r.DumpShaderDebugInfo=1 改为r.DumpShaderDebugInfo=1也就是反注释。

2025-09-29 09:35:57 257

原创 UE4报错 Unable to instantiate UnrealEd module for non-editor targets

UE4工程编译中,遇到下面报错:2>UnrealBuildTool: Error : Unable to instantiate module 'UnrealEd': Unable to instantiate UnrealEd module for non-editor targets. (referenced via Target -> CrossPlatformAutoTest.Build.cs -> MyGameGameplay.Build.cs -

2025-09-24 14:28:09 423

原创 UE4/UE5 如何迁移HotPatcher插件

在UE5项目中遇到Nanite静态网格体打包失败问题("Invalid mesh description during Nanite build"),通过HotPatcher插件进行单独Cook解决。操作步骤包括:1) 安装HotPatcher插件;2) 修改uproject配置文件启用插件;3) 重新生成工程并编译;4) 对问题资源单独执行WindowsClient Cook;5) 最终完成整体打包。该方法成功修复了网格体构建错误,实现了项目正常打包。(149字)

2025-09-20 14:09:03 847 1

原创 Visual Studio如何对报错进行文件名称的排序

Rider做不到这一点。

2025-09-16 14:54:36 91

原创 UE4工程启动卡很久如何在运行时进行dump查看堆栈

工程启动卡顿原因不明,通过任务管理器转储进程并分析堆栈,发现是正常的Shader编译过程导致延迟。操作步骤:1)用taskmgr生成转储文件;2)将文件移至工程/Saved/Crashes目录;3)用VS分析堆栈确认问题。该方法有效定位了性能瓶颈所在。

2025-09-15 20:47:45 431

原创 Rider开启“Debug”调试配置解决UE4代码无法断点的问题

Rider开启“Debug”调试配置解决UE4代码无法断点的问题

2025-09-15 19:18:18 349

原创 VS观察Dump时报错UNAVAILABLE, THE CURRENT PROCESS IS NOT A RECOGNIZED SIE PROCESS

在VS查看dump文件的过程中,看到 UNAVAILABLE, THE CURRENT PROCESS IS NOT A RECOGNIZED SIE PROCESS. 这个报错,它是什么含义呢?问过AI,说当前最可能的原因是用于调试的文件版本不匹配或符号文件缺失/不正确。

2025-09-15 15:47:01 164

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

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

2025-09-11 15:43:03 462

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

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

2025-09-11 11:07:07 334

原创 理解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 544

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

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

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

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

2025-09-04 21:01:13 946

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

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

2025-09-04 19:55:06 1089

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

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

2025-09-04 12:21:29 341

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

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

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

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

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

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

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

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

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

2025-07-02 15:20:28 339

原创 如何使用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 761

原创 UE4原生的增量Cook原理

UE4增量Cook

2025-01-16 11:05:21 617

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

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

2024-12-31 15:22:10 724

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

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

2024-12-31 10:35:43 1237

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

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

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

2024-12-20 16:59:29 846

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

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

2024-11-21 17:03:22 2174

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

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

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

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

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

2024-11-12 14:40:04 1311

CookedIniVersion示例文件.txt

CookedIniVersion示例文件.txt

2025-11-06

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

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

2024-08-24

空空如也

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

TA关注的人

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