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

Texture2DArray.GetPixels

建议更改

成功!

感谢您帮助我们提升 Unity 文档的质量。尽管我们无法采纳所有提交内容,但我们确实会阅读用户提出的每一项建议变更,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,您建议的更改无法提交。请在几分钟后<a>重试</a>。感谢您抽出宝贵时间帮助我们提升 Unity 文档的质量。

关闭

取消

切换到手册

声明

public Color[] GetPixels(int arrayElement, int miplevel);

声明

public Color[] GetPixels(int arrayElement);

参数

arrayElement 要从其中读取像素数据的数组切片。
miplevel 要获取的 mipmap 级别。范围为 0 至纹理的 Texture.mipmapCount。默认值为 0

返回

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

说明

获取一个切片的 mipmap 级别的像素颜色数据,以 Color 结构表示。

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

该数组包含行对行排列的像素,从纹理的左下角开始。数组的大小是 mipmap 级的宽度 × 高度。

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

如果 GetPixels 失败,Unity 会引发异常。 GetPixels 失败可能是由于数组包含的数据太多。对于超大纹理,改用 GetPixelData

你无法对使用 Crunch 纹理压缩的纹理使用 GetPixel。改用 GetPixels32

using UnityEngine;

public class Texture2DArrayExample : MonoBehaviour { public Texture2DArray source; public Texture2DArray destination;

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

// If required, manipulate the pixels before applying them to the destination Texture2DArray. // 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 Texture2DArray. int destinationSlice = 0; int destinationMipLevel = 0; destination.SetPixels(pixels, destinationSlice, destinationMipLevel);

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