Version: 6000.3
语言: 中文
默认着色器关键字
控制着色器使用的内存量

对 AssetBundle 中的着色器重复进行故障排除

如果您使用 AssetBundles,如果您引用一个着色器,Unity 可能会编译重复的着色器着色器在 GPU 上运行的程序。更多信息
请参阅术语表
在两个或多个对象中。例如:

  • AssetBundle中的材质和构建的材质场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
    请参阅术语表
    引用相同的着色器。
  • 多个资产包包含引用资产包外部相同着色器的材质。

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

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

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

你可以将材质和着色器变体集合添加到资产包中,以指定要包含的着色器变体。

如果您创建单个 AssetBundle,则某些着色器可能会保留在内存中,即使不再需要它们,因为您无法部分卸载 AssetBundle。您可以通过为每组一起使用的着色器创建一个单独的 AssetBundle 来避免这种情况,例如,“forest”AssetBundle 和“desert”AssetBundle。如果您使用可寻址对象,请参阅管理加载的资产包或可寻址对象系统中的内存管理

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