自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决Rider编译日志乱码的方法

在Rider编译的过程中,日志文件是乱码的,例如:2>PrimitiveSceneInfo.cpp(1680): Error C2601 : ��FPrimitiveSceneInfo::AddToScene��: ���غ��������ǷǷ���2>PrimitiveSceneInfo.cpp(1670): Reference C2601 : ������һ����{��û��ƥ����2>PrimitiveSceneInfo.cpp(1896): Error C2601 : ��FPrimitiv

2026-04-13 14:21:28 44

原创 Rider编译Bug:修改文件后瞬间编译通过

多次修改代码,发现修改的代码在断点时,都无法断点,显示 “断点无法定位” 代码旁边出现的是 ⛔️。稍微修改代码后,尝试编译,发现瞬间编译通过。这就是bug 了。

2026-03-13 20:23:10 16

原创 UE4 PSO介绍六:PSO与Shader编译的关系

提问:在UE4游戏运行时中,PSO的Precompile 是否会去编译Shader?回答:不会,也会。我们得先理清楚 “Shader编译” 这个概念。在 “着色器(Shader)的编译”​ 和 “管线状态对象(PSO)的创建”​ 这两个发生在不同阶段、不同层级的操作下,有着不同的 “Shader编译” 的概念。下图清晰地展示了从源代码到GPU机器码的完整流程,以及PSO预编译在其中的精确位置。在打包游戏时(构建时),UE4的着色器编译器会将项目中所有的材质节点网络、.usf。

2026-01-16 18:11:19 679 1

原创 UE4 PSO介绍五:Build PSO

今天我们看看Build PSO具体是什么含义。Expand PSO得到了一系列“需求清单”,利用这些清单,跑一个工具,就能够得到 .stable.upipelinecache 了。.stable.upipelinecache 就是最终成品的PSO缓存,随包体分发给玩家。后文或接下来我的文章里,提到“PSO产物”,都是指 .stable.upipelinecache。这个“跑工具得到PSO产物”的过程,就是 Build PSO。工具命令行如下,其中最后一个参数是输出。

2026-01-15 13:41:47 936

原创 UE4 PSO介绍四:PSO Precache

如果你的项目团队不大,没有时间精力去做 “跑测→收集.rec.upipelinecache→再打包”这一套(Bundled PSO Cache),那么 PSO Precache 是一个开箱即用的UE4/5自带的功能。

2026-01-09 12:45:02 1191

原创 UE4 PSO介绍三:认识.scl.csv与.stablepc.csv

scl其实是“Shader Code Library”的缩写。下面是一个示例:ShaderTypeVFTypeOutputHashSM5HighSF_VertexPCD3D_SM5Perm_000SM5HighSF_VertexPCD3D_SM5Perm_000SM5HighSF_PixelPCD3D_SM5Perm_000。

2026-01-08 12:36:02 743

原创 UE4 PSO介绍二:认识.rec.upipelinecache

(Macros)和。

2026-01-07 17:53:29 662

原创 UE4 PSO介绍一:初识PSO与它的两种工作方式

PSO的全称是Pipeline State Object,主要是用来给GPU描述如何计算、渲染的设置集合。PSO是伴随新一代的图形API(DX12、Vulkan、Metal)提出的。在这之前的时代,渲染设置是一个状态机管理的,用单个API设置单种渲染状态。现代图形API是把所有的渲染状态打包设置给GPU。

2026-01-07 09:41:39 472

原创 UE4 Cook流程中IdenticalUncookedPackages的含义,以及一种“资源未打包”情形的解释

摘要:在调整UE4地图打包配置时,发现地图M在第三次构建时未能正确打包。原因是项目中启用了IgnoreIniSettingsOutOfDate选项,导致DirectoriesToNeverCookWildcard配置变更时未自动清理Saved目录。具体表现为第二次构建的跳过状态被记录在DevelopmentAssetRegistry.bin中,使得第三次构建时直接跳过了M地图的Cook过程。解决方法包括:1) 关闭IgnoreIniSettingsOutOfDate选项;2) 手动清理Saved/Cooke

2026-01-04 17:24:01 335 1

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

原创 UE4热更资源Pak

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

2025-11-21 15:25:37 424

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

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

2025-11-14 11:56:32 156

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

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

2025-11-06 20:20:05 1158

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

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

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

2025-10-20 20:20:25 548

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

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

2025-10-17 15:08:22 230

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

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

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

2025-09-29 09:35:57 283

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

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

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

Rider做不到这一点。

2025-09-16 14:54:36 111

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

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

2025-09-15 20:47:45 457

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

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

2025-09-15 19:18:18 426

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

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

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

2025-09-11 15:43:03 515

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

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

2025-09-11 11:07:07 389

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

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

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

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

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

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

2025-09-04 19:55:06 1114

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

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

2025-09-04 12:21:29 433 1

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

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

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

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

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

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

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

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

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

2025-07-02 15:20:28 375

CookedIniVersion示例文件.txt

CookedIniVersion示例文件.txt

2025-11-06

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

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

2024-08-24

空空如也

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

TA关注的人

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