Version: Unity 6.0 (6000.0)
语言 : 中文
默认着色器关键字
控制着色器使用的内存量

AssetBundle 着色器重复故障排除

如果您使用 AssetBundle,而且在两个或多个对象中引用一个着色器,Unity 可能会编译重复的着色器。例如:

  • AssetBundle 中的材质和构建的场景中的材质引用同一个着色器。
  • 多个 AssetBundle 包含引用 AssetBundle 外部的同一个着色器的材质。

这会增加着色器使用的内存和存储空间,并中断绘制调用批处理

为了避免这种情况,可以使用以下方法:

  • 首先加载包含所有着色器的 AssetBundle,然后加载并实例化引用着色器的 AssetBundle 资源。请参阅 AssetBundle 依赖项 以了解更多信息。
  • 构建 AssetBundle 以最大限度减少重复。请参阅资源复制以了解更多信息。

您可以将材质和着色器变体集合添加到 AssetBundle 以指定要包含的着色器变体。

如果创建单个 AssetBundle,某些着色器即使不再被需要,也可能会保留在内存中,因为无法部分卸载 AssetBundle。为了避免这种情况,可以为一起使用的每组着色器创建单独的 AssetBundle,例如“森林”AssetBundle 和“沙漠”AssetBundle。请参阅管理加载的 AssetBundle,如果您使用 Addressables,请参阅 Addressables 系统中的内存管理

默认着色器关键字
控制着色器使用的内存量