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

纹理 3D.GetPixels

建议更改

成功!

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

关闭

提交失败

由于某些原因,您的建议更改未能提交。请在几分钟内再尝试。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换至手册

声明

public Color[] GetPixels(int miplevel);

声明

public Color[] GetPixels();

参数

miplevel 要获取的mipmap 级别。范围为 0 至纹理的 Texture.mipmapCount。默认值为 0

返回

Color[] 包含像素颜色的数组。

说明

颜色结构的形式获取 MIP 贴图级别像素颜色数据。

此方法从 CPU 内存中获取纹理的像素数据。 Texture.isReadable 必须为 true

阵列包含像素,从纹理正面开始,逐片切片。每一层水平包含像素行,从纹理的左下角开始。数组大小是 MIP 贴图级别的宽 × 高 × 深度。

每个像素都是一个 颜色 结构。 GetPixels 可能比其他一些纹理方法慢,因为它将纹理使用的格式转换成 颜色GetPixels 还需要解压压缩纹理,并使用内存来存储解压后的区域。若要更快地获取像素数据,请使用 GetPixelData

一次调用 GetPixels 通常比多次调用 GetPixel 的速度更快,尤其对于大纹理。

如果 GetPixels 失败,Unity 将抛出异常。如果数组包含太多数据,GetPixels 可能会失败。对于非常大的纹理,请使用 GetPixelData

你不能使用 GetPixel 和使用 Crunch 纹理压缩的纹理。请改用 GetPixels32

using UnityEngine;

public class Texture3DExample : MonoBehaviour { public Texture3D source; public Texture3D destination;

void Start() { // Get a copy of the color data from the source Texture3D, in high-precision float format. // Each element in the array represents the color data for an individual pixel. int sourceMipLevel = 0; Color[] pixels = source.GetPixels(sourceMipLevel);

// If required, manipulate the pixels before applying them to the destination texture. // This example code reverses the array, which rotates the image 180 degrees. System.Array.Reverse(pixels, 0, pixels.Length);

// Set the pixels of the destination Texture3D. int destinationMipLevel = 0; destination.SetPixels(pixels, destinationMipLevel);

// Apply changes to the destination Texture3D, which uploads its data to the GPU. destination.Apply(); } }