最近在项目里碰到一个小插曲:场景里的纹理和地形,一直闪烁。起初以为是显卡问题,后来排查了一圈,发现其实跟 Mip 设置 和 DDC 缓存 有关系。这里简单记一下。
过程记录
1. 纹理闪烁
一开始因为我从网上找到一些资产导入后,拖进关卡中,法线模型纹理一直闪烁,在内容浏览器中也纹理缩略图也一直闪烁,且缩略图上一直有"纹理"两个字。我初步猜测和压缩模式有关,但是修改后并无变化,又猜测是Mip的问题,是的,修改成无Mip贴图模式后就不闪烁了。
2. 地形闪烁
接着又发现地形整个区域在闪。日志里报了很多:
意思是 Derived Data Cache (DDC) 写不进去。地形的 Heightmap / Weightmap 太大,结果引擎每次都在重算 → 画面看着就像"开了频闪"。
3. 排查方向
- 纹理这边,我先是尝试调 MipGen 设置和各向异性过滤,确实能改善。
- 地形这边,最后发现 C 盘空间太小,DDC 一直写失败。把缓存路径挪到 D 盘后,闪烁明显缓解了。
修改磁盘存放DDC的位置
修改 Engine.ini
在项目 Config/DefaultEngine.ini
里,添加:
ini
[InstalledDerivedDataBackendGraph]
Local=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, PurgeTransient=true, Root="D:/UE_DDC")
Root
指向你希望存放缓存的新路径(例如D:/UE_DDC
)。- 路径必须是一个已经存在的文件夹。
然后删除旧的:
makefile
C:\Users<用户名>\AppData\Local\UnrealEngine\Common\DerivedDataCache
UE 会自动在新的 D:/UE_DDC
下重建缓存。
小结
-
最后得到的结论:
- 普通纹理:主要是 MipGen的问题;
- 地形:根本原因还是 DDC 缓存不足。
另外
因为要修改大量纹理为无mip贴图的MipGen模式,一般情况直接全选右键【编辑属性矩阵中的选择】,直接批量设置即可,但是因为一直闪烁连这个界面也闪烁导致我一直点不到这个选项,所以我开发了一个python脚本,用作一键设置mip模式。

记录一下代码
ini
import unreal
def disable_mips_for_selected():
# 获取编辑器选中的资源
selected_assets = unreal.EditorUtilityLibrary.get_selected_assets()
# 计数器
modified_count = 0
# 遍历选中的资源
for asset in selected_assets:
# 检查是否为纹理资源
if isinstance(asset, unreal.Texture2D):
# 获取纹理设置
texture = asset
# 修改Mip设置
texture.set_editor_property('mip_gen_settings', unreal.TextureMipGenSettings.TMGS_NO_MIPMAPS)
# 标记资源为待保存
texture.modify()
modified_count += 1
# 保存修改后的资源
if modified_count > 0:
unreal.EditorAssetLibrary.save_loaded_assets(selected_assets)
unreal.log(f"成功修改 {modified_count} 个纹理的Mip设置")
else:
unreal.log("未选中任何纹理资源")
# 执行主函数
if __name__ == '__main__':
disable_mips_for_selected()
*