您可以使用日志记录和性能分析工具检查 Unity 编译的着色器变体数量,并确定删除(剥离)变体的方法,从而缩短构建时间并减少内存使用量。可以执行以下操作:
可以生成编辑器在场景 (Scene) 视图和游戏 (Game) 视图中使用的着色器变体列表。为此需要执行以下操作:
构建项目后,打开 Editor.log 日志文件并搜索 Compiling shader,查看 Unity 编译和剥离的变体。例如:
Compiling shader "Sprites/Default" pass "" (vp)
Full variant space: 8
After settings filtering: 8
After built-in stripping: 4
After scriptable stripping: 4
Processed in 0.00 seconds
starting compilation...
finished in 0.03 seconds. Local cache hits 0 (0.00s CPU time), remote cache hits 0 (0.00s CPU time), compiled 4 variants (0.09s CPU time), skipped 0 variants
Prepared data for serialisation in 0.00s
如果使用通用渲染管线 (URP) 或高清渲染管线 (HDRP),请参阅以下内容:
Unity 为 GPU 编译着色器时,它会在控制台窗口中显示一条 Compiled shader 消息。
使用内存性能分析器 (Memory Profiler) 模块或内存性能分析器包可检查运行时内存着色器使用了多少内存。如果着色器使用大量内存,可以尝试剥离其变体。
在 Unity 2022.2 及更高版本中,当材质尝试使用缺失的着色器变体时,可以强制 Unity 在运行时显示粉红色错误着色器。
还可以使用 strictShaderVariantMatching 在 C# 脚本中启用此功能。
执行此操作时,Unity 会在控制台中显示一条警告,其中包含缺失的变体及其关键字。您可以在剥离过程中使用此属性来检查是否删除了项目所需的着色器变体。