版本:Unity 6 (6000.0)
语言英语
  • C#

Texture2DArray.Apply

发送修改建议

操作成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交,但是我们会阅读用户提供的每条修改建议,并在适用时进行更新。

关闭

提交失败

出于某种原因,您的修改建议无法提交。请在几分钟后重试。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void Apply(bool updateMipmaps = true, bool makeNoLongerReadable = false);

参数

updateMipmaps 当值为 true 时,Unity 重新计算 mipmap 级别,使用 mipmap 级别 0 作为源。默认值为 true
makeNoLongerReadable 当值为 true 时,在将纹理上传至 GPU 后,Unity 删除 CPU 内存中的纹理并设置 isReadablefalse。默认值为 false

说明

将您在 CPU 纹理中做出的更改复制至 GPU。

对于大多数类型的纹理,Unity 可以将纹理副本存储在 CPU 和 GPU 内存中。

CPU 副本是可选的。如果 CPU 副本存在,您可以比 GPU 副本更灵活地读写 CPU 副本。但是,要渲染更新后的纹理,您必须使用 Apply 将其从 CPU 复制至 GPU。

如果将 makeNoLongerReadable 设置为 true,Unity 将在将纹理上传到 GPU 后删除 CPU 拷贝。这意味着 Unity 无法重新加载纹理。即使在数据存储在磁盘上的纹理资产上调用 Apply,一旦 Unity 丢弃了 CPU 拷贝,它也不会再尝试从磁盘重新加载,因为可读纹理数据可能已发生更改。当在项目中使用 Mipmap 限制以减少上传的 Mipmap 数量(例如,QualitySettings.globalTextureMipmapLimit)时,这是相关的。在 Apply 中丢弃 CPU 拷贝后,运行时纹理和可读纹理资产都将停止遵循质量设置。上传到 GPU 的纹理的上传分辨率在 Unity 丢弃 CPU 拷贝时保持不变。如果这是不可取的,请确保纹理已在导入/构建时或运行时使用 Texture2DArray.ignoreMipmapLimit 完全分辨率上传。

通常只在您已更新 Mipmap 级别(例如使用 SetPixels)的情况下才将 updateMipmaps 设置为 false

Apply 是一个代价高昂的操作,因为它会复制纹理中的所有像素,即使您只更改了部分像素,因此在调用它之前尽可能多地更改像素。

其他资源: Texture2D.Apply