colors | 要使用的像素颜色数组。这是展平为一维数组的二维图像。 |
miplevel | 要写入colors 的 mipmap 级别。范围是0 到纹理的Texture.mipmapCount。默认值为0 。 |
face | 要写入colors 的CubemapFace。 |
设置某一面整层的像素颜色。
此方法为 CPU 内存中的纹理设置像素数据。 Texture.isReadable 必须为true
,且您必须在SetPixels
后调用Apply才能将已更改的像素上传至 GPU。
Apply是一个耗时的操作,因为它会复制纹理中的所有像素,即使您仅更改了一些像素,因此在调用它之前尽可能更改更多像素。colors
必须按从面部纹理的左下角开始的行写入像素。数组的大小必须为 mipmap 层的宽度 × 高度。
与多次调用SetPixel相比,一次调用SetPixels
通常更快,尤其对大型纹理而言。SetPixels
可能比某些其他纹理方法慢,因为它将Color结构转换为纹理所使用的格式。若要更快速地设置像素数据,请改用SetPixelData。
你可以对以下 纹理格式 使用 SetPixels
对于所有其他格式,SetPixels
会失败。当 SetPixels
失败时,Unity 会抛出一个异常。
其他资源:GetPixels,SetPixelData,Apply,mipmapCount。
// copy a texture to the +X face of a cubemap
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public Cubemap c; public Texture2D t; private Color[] CubeMapColors;
void Example() { CubeMapColors = t.GetPixels(); c.SetPixels(CubeMapColors, CubemapFace.PositiveX); c.Apply(); } }