miplevel | 要从其获取像素的多级渐进纹理级别。默认为 0。 |
Color[] 一个数组,其中包含纹理的多级渐进纹理级别中的所有像素。
从纹理中获取像素颜色。
该函数返回纹理的整个 Mip 级别的
像素颜色数组。
返回的数组是一个平展 2D 数组,其中像素是从左到右、
从下到上排列(即,逐行排列)的。数组大小为所用 Mip 级别的宽度乘以高度。
默认 Mip 级别为零(基础纹理),在这种情况下,其大小只是该纹理的大小。
在一般情况下,Mip 级别的大小为 mipWidth=max(1,width>>miplevel)
,
高度也是如此。
该纹理必须在导入设置中设置了 Read/Write Enabled 标志,否则此函数将失败。在使用 Crunch 纹理压缩的纹理上,GetPixels 不可用。
使用 GetPixels
可比反复调用 GetPixel 更快,尤其是
对于较大纹理而言。此外,GetPixels
还可访问单独的多级渐进纹理级别。对于大多数纹理来说,
使用 GetPixels32 甚至还要再快一些,GetPixels32 返回低精度颜色数据,
而不需要进行代价高昂的整数到浮点数转换。
另请参阅:SetPixels、mipmapCount、GetPixels32。
x | 要获取的像素数组的 x 位置。 |
y | 要获取的像素数组的 y 位置。 |
blockWidth | 要获取的像素数组的宽度长度。 |
blockHeight | 要获取的像素数组的高度长度。 |
miplevel | 要获取像素的多级渐进纹理级别。(可选)默认为 0。 |
Color[] 纹理中已选择的像素的数组。
获取像素颜色块。
该函数为上面的 GetPixels
的扩展版本;
它不返回整个 Mip 级别,而只返回从 x,y 开始的 blockWidth
x blockHeight
区域。
块必须适合使用的 Mip 级别。返回的数组大小为 blockWidth*blockHeight。
// Get a rectangular area of a texture and place it into
// a new texture the size of the rectangle.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
// Source texture and the rectangular area we want to extract.
public Texture2D sourceTex;
public Rect sourceRect;
void Start()
{
int x = Mathf.FloorToInt(sourceRect.x);
int y = Mathf.FloorToInt(sourceRect.y);
int width = Mathf.FloorToInt(sourceRect.width);
int height = Mathf.FloorToInt(sourceRect.height);
Color[] pix = sourceTex.GetPixels(x, y, width, height);
Texture2D destTex = new Texture2D(width, height);
destTex.SetPixels(pix);
destTex.Apply();
// Set the current object's texture to show the
// extracted rectangle.
GetComponent<Renderer>().material.mainTexture = destTex;
}
}