Version: 6000.3
语言: 中文
启用 mipmap 流式处理
覆盖纹理的 mipmap 级别

配置 mipmap 流式处理

设置哪些摄像机使用 mipmap 流式处理

默认情况下,所有相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表
在你的场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
启用 Mipmap 流式处理时使用 Mipmap 流式处理。

在单个相机上禁用 mipmap 流式处理

按着这些次序:

  1. 在场景中选择一个摄像机。
  2. 检查器(Inspector) 窗口中,选择 添加组件>流式处理控制器(Streaming Controller) 。
  3. 禁用 流送控制器(Streaming Controller) 组件。

在单个相机上启用 mipmap 流式处理

按着这些次序:

  1. 转到 编辑>项目设置(Project Settings> 质量(Quality)。
  2. 纹理(Textures) 分段的 Mipmap 流送(Mipmap Streaming) 下,禁用 添加所有摄像机(Add All Cameras) 。
  3. 流送控制器(Streaming Controller) 组件添加到摄像机,并确保它已启用。

设置摄像机使用的 mipmap 级别

使用流式处理控制器组件中的 Mipmap Bias 设置强制 Unity 加载比 mipmap 流式处理自动选择的 mipmap 级别更小或更大的 mipmap 级别。

Unity 将 Mipmap Bias 值添加到相机视图中纹理的 Mipmap 级别。例如,如果将 Mipmap Bias 设置为 2,并且 Mipmap 流送为纹理选择 mipmap 级别 1,则 Unity 会加载 mipmap 级别 3 (1 + 2)。

还可以使用 StreamingController.streamingMipmapBias API 来控制此设置。

设置纹理的内存预算

要设置 Unity 用于纹理的最大 GPU 内存,请执行以下步骤:

  1. 转到 编辑>项目设置(Project Settings> 质量(Quality)。
  2. 纹理(Textures) 分段中,设置 内存预算(Memory Budget) 值(以MB为单位)。

内存预算适用于 mipmap 流式处理,以及不使用 mipmap 流式处理的所有纹理的 mipmap 级别。例如,如果将内存预算设置为 100 MB,并且有 90 MB 的纹理不使用 mipmap 流式处理,则 mipmap 流式处理的内存预算为 10 MB。

为避免超出内存预算,Unity 执行以下作:

  • 加载纹理的较低分辨率 mipmap 级别。这可能会导致纹理弹出或加载缓慢。
  • 从 GPU 内存中删除未使用的 Mipmap 级别,为所需的 Mipmap 级别腾出空间。

您可以使用 Max Level Reduction 属性来阻止 Unity 删除小于特定级别的 mipmap 级别。此值也是 Unity 在首次启动时加载的 mipmap 级别。例如,如果将 Max Level Reduction 设置为 2,则 Unity 仅加载级别 2 及以上的 mipmap 级别,并将它们保留在内存中。

Unity 必须将 mipmap 级别保持在 GPU 内存中的 Max Level Reduction 值之上。这可能意味着 Unity 超出了内存预算。

估算内存预算

要估算项目的内存预算,请执行以下步骤:

  1. 在项目运行时,使用 Texture.desiredTextureMemory API 获取 Unity 加载的纹理的总大小。
  2. 内存预算设置为略高于该值。

这样可以确保 Unity 有足够的纹理内存可用于场景中资源最密集的区域,并防止纹理下降到较低的分辨率。如果您有额外的可用内存,您可以设置更大的内存预算,以便 Unity 可以将场景中不可见的纹理数据保留在 GPU 缓存中。

注意:如果您使用Texture.desiredTextureMemory在编辑器中,总大小可能包括 Unity 用于渲染编辑器窗口的纹理。

在运行时设置内存预算

您可以使用以下 API 在运行时设置和控制内存预算:

启用 mipmap 流式处理
覆盖纹理的 mipmap 级别