分类:虚幻 5
学习路径:由浅入深,按顺序阅读效果最好(共 100 篇)
-
81. UAsset/UPackage 格式:从 Package Summary 到 Import/Export 表
拆开一个 .uasset 的二进制骨架:Package Summary、Names/Import/Export 三张表各存什么,FPackageIndex 怎么当全文件统一的指针用,EditorOnly 数据在 Cook 时怎么被剥掉。
-
82. DDC 派生数据缓存:GetDerivedData 的哈希键怎么构造
DDC 能成立的前提是什么、查询键由哪几段拼成、各级后端怎么串,以及为什么"配置也是键的一部分"——看懂这些才能解释缓存为什么命中或失效。
-
83. Zen Server 详解:本地与远端部署
Zen 把 DDC 从"一个文件夹"变成"一个带 HTTP 接口的内容寻址存储":本地 store 怎么跑、远端共享怎么部署、oplog 凭什么撑起增量 Cook 和补丁 diff。
-
84. Pak 与 Chunk:PrimaryAssetLabel 的分包规则
Cook 之后的资产怎么分进不同的 pak/容器:Chunk 分配规则从哪来、PrimaryAssetLabel 怎么写、运行时挂载优先级怎么决定覆盖关系,以及补丁体积为什么取决于 Chunk 划法。
-
85. Cook 流程深潜:CookByTheBook 的依赖遍历与 EditorOnly 剥离
从 CookCommandlet 入口到 CookByTheBook 的队列消费:初始包集从哪来、依赖图怎么展开、保存阶段怎么分层并行、EditorOnly 数据在哪一步被物理剥掉。
-
-
87. Slate 架构:SWidget 的 Invalidate 与 Paint 模型
Slate 是"保留的 widget 树 + 每帧重算"的混合模型:讲清 Invalidate 标志、Prepass 布局、Paint 遍历各自的责任边界,以及缓存为什么需要 volatility 概念。
-
88. Slate 渲染:FSlateDrawElement 如何合并成 Draw Call
UI 的 draw call 数不是 widget 数:讲清 DrawElement 到 RenderBatch 的合并规则,以及纹理图集在其中的决定性作用。
-
89. UMG 编译:WidgetBlueprint 到 UWidgetTree 的生成过程
Designer 面板拖出来的控件在编译期变成什么:UWidgetBlueprintGeneratedClass 的结构、绑定信息的固化,以及运行时从 UWidget 树到 Slate 树的重建。
-
90. UMG 属性绑定:每帧求值的隐形成本
Designer 里的绑定下拉本质是一条每帧执行的蓝图委托:拆开 FDelegateRuntimeBinding 的求值链,给出"什么时候该用、什么时候必须手动"的判据。
-
91. UMG 的 MVVM 插件:ViewModel 绑定管线解剖
官方 MVVM 插件用 FieldNotify 取代每帧求值:讲清绑定条目如何编译、求值、更新,以及它在表现层解耦上解决和没解决的问题。
-
92. 字体与文本整形:FSlateFontCache 与 HarfBuzz 的协作
一段中文从字符串到屏幕要过五道工序:分词成 run、HarfBuzz 整形、换行、字形光栅化、图集缓存——每一步都有可以量化的成本和一个经典坑。
-
93. Unreal Insights:Trace 通道、采集模式与一次卡顿定位实录
Insights 的架构是独立的 Trace 服务器 + 流式事件协议:讲清通道开关的代价模型、三种采集姿势,以及一次从 stat unit 发现到根因坐实的完整排查。
-
94. stat 命令族:帧时间拆解与第一道性能防线
stat unit 的四个数字各自怎么测、互相什么关系,stat game/gpu/scenerendering 各自的适用场景,以及 stat 数据背后的采集机制(为什么是平均数骗了你)。
-
95. CPU 性能剖析:帧热点到函数级定位
GameThread 变胖的常见原因清单,从 stat unit 的 Frame/GT 剪刀差入手,经 Unreal Insights 进函数级热点,再用采样剖析器收口的完整流程。
-
96. GPU 剖析:stat gpu 与 RenderDoc 联用
从 stat gpu 的 Pass 耗时聚合到 RenderDoc 的单次绘制抓取:两层工具各看到什么、各自的坑(时间戳粒度、异步重叠、移动端失真),以及怎么从 Pass 耗时反推内容问题。
-
97. 内存分析:MemReport 与 LLM 标签对账
从系统 RSS 到引擎 LLM 标签再到分配器粒度,三层内存账怎么对上;MemReport 实战流程和"GC 前后两次快照做 diff"的泄漏定位套路。
-
98. 加载卡顿定位:AsyncLoading 与 FlushAsyncLoading
周期性卡顿最常见的根因是主线程同步加载:哪些 API 会触发 FlushAsyncLoading、异步加载的运行时模型、相关 cvar 的调节方向,以及从 Insights 证据到预载改造的完整处置。
-
99. Draw Call 优化:合并、实例化与 HLOD 的手段对比
场景侧降批的三条路线——离线合并、GPU 实例化、HLOD 空间聚类——各自的机制、适用场景和代价,以及"什么时候不该合并"的判断标准。
-
100. 打包后性能:Shipping 配置的编译开关
Development 和 Shipping 包帧率差一截的源头:构建配置决定哪些代码被编译期裁剪,check/ensure、STAT、控制台、校验层各自在哪一层消失,以及为什么压测必须用 Test 包。