【Bug】UE5中纹理和地形一直闪烁

最近在项目里碰到一个小插曲:场景里的纹理和地形,一直闪烁。起初以为是显卡问题,后来排查了一圈,发现其实跟 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()

*

相关推荐
Mr_1471 天前
【独游开发必备】游戏开发资源宝藏网站(美术篇)
游戏开发
龚子亦3 天前
【Unity开发】丧尸围城项目实现总结
unity·游戏引擎·游戏开发
小哈里6 天前
【Game-Infra】游戏开发的流程,游戏发布的打包与构建(硬件选型,SDK与操作系统,包体管理,弹性构建,构建调优)
游戏·游戏开发·后端开发·基础设施·打包构建·游戏发布·弹性构建
小强Fnsy6 天前
一款将GIF、序列帧的指定选区转换成新的序列帧,并导出为Plist、PNG、GIF的工具
前端·游戏开发
Thomas游戏开发9 天前
Unity Android性能优化设置指南
前端框架·unity3d·游戏开发
腾讯云云开发10 天前
AI编程能做什么?9个优秀案例,手把手图文教程,部分实战作品已开源
ai编程·游戏开发·小程序·云开发
黑客影儿10 天前
在Godot中为您的游戏添加并控制游戏角色的完整技术指南
开发语言·游戏·游戏引擎·godot·gdscript·游戏开发·3d游戏
Thomas游戏开发12 天前
Unity3D C#监听Button点击事件
前端·unity3d·游戏开发
你也向往长安城吗14 天前
基于 navmesh 的路径搜索技术剖析 (游戏、三维方向必看!!!)
javascript·游戏·游戏开发