Version: 2021.3
public void SetPixels32 (Color32[] colors, int miplevel= 0);

参数

colors Pixel values to assign to the Texture.
miplevel Mip level of the Texture passed in pixel values.

描述

设置像素颜色块。

该函数接收一个 Color32 数组, 然后更改纹理的整个 Mip 级别的像素颜色。调用 Apply 可实际将更改的像素 上传到显卡。

colors 数组是一个平展 2D 数组,其中像素是从左到右、 从下到上排列(即,逐行排列)的。数组大小必须至少为所用 Mip 级别的宽度乘以高度。 默认 Mip 级别为零(基础纹理),在这种情况下,其大小只是该纹理的大小。 在一般情况下,Mip 级别的大小为 mipWidth=max(1,width>>miplevel), 高度也是如此。

This function works only on (most) uncompressed texture formats. If the Texture format is not RGBA32, ARGB32 or any other 8 bit/channel format, then this function converts the data. This extra conversion makes the function slower. For other formats SetPixels32 fails. Texture.isReadable must be true.

使用 SetPixels32 比调用 SetPixels 快。为了更快进行像素数据 访问,请使用返回 NativeArrayGetRawTextureData

SetPixels32 throws an exception when it fails.

另请参阅:SetPixelsSetPixelDataGetPixels32GetPixelsApplyGetRawTextureDataLoadRawTextureDatamipmapCount

using UnityEngine;

public class Example : MonoBehaviour { // This script will tint texture's mip levels in different colors // (1st level red, 2nd green, 3rd blue). You can use it to see // which mip levels are actually used and how.

void Start() { Renderer rend = GetComponent<Renderer>();

// duplicate the original texture and assign to the material Texture2D texture = (Texture2D)Instantiate(rend.material.mainTexture); rend.material.mainTexture = texture;

// colors used to tint the first 3 mip levels var colors = new Color32[3]; colors[0] = Color.red; colors[1] = Color.green; colors[2] = Color.blue; var mipCount = Mathf.Min(3, texture.mipmapCount);

// tint each mip level for (var mip = 0; mip < mipCount; ++mip) { var cols = texture.GetPixels32(mip); for (var i = 0; i < cols.Length; ++i) { cols[i] = Color32.Lerp(cols[i], colors[mip], 0.33f); } texture.SetPixels32(cols, mip); }

// actually apply all SetPixels32, don't recalculate mip levels texture.Apply(false); } }

public void SetPixels32 (int x, int y, int blockWidth, int blockHeight, Color32[] colors, int miplevel= 0);

描述

设置像素颜色块。

该函数为上面的 SetPixels32 的扩展版本; 它不修改整个 Mip 级别,而只修改从 x,y 开始的 blockWidth x blockHeight 区域。 colors 数组的大小必须为 blockWidth*blockHeight, 并且修改后的块必须适合使用的 Mip 级别。