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

Texture2D.SetPixels32

建议更改

成功!

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

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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

参数

colors 要使用的像素颜色数组。这是一个展平为一维数组的二维图像。
miplevel 要将 colors 写入的 Mipmap 级别。范围为纹理的 Texture.mipmapCount0 开始。默认值为 0

描述

设置整个 Mipmap 级别的像素颜色。

此方法在 CPU 内存中设置纹理的像素数据。必须将 Texture.isReadable 设置为 true,并且必须在 SetPixels32 后调用 Apply 以将更改的像素上传到 GPU。

colors 必须包含从纹理前面开始逐片切片的像素。每个切片必须包含逐行像素,从纹理的左下角开始。数组的大小必须是 Mipmap 级别的高度×宽度×深度。

一次调用 SetPixels32 通常比多次调用 SetPixel 更快,尤其是在大型纹理中。

SetPixels32 可能比某些其他纹理方法慢,因为它将 Color32 结构转换为纹理使用的格式。要更快地设置像素数据,请改用 SetPixelData

您可以将 SetPixels32 与以下 纹理格式 一起使用

  • Alpha8
  • ARGB32
  • ARGB4444
  • BGRA32
  • R16
  • R16_SIGNED
  • R8
  • R8_SIGNED
  • RFloat
  • RG16
  • RG16_SIGNED
  • RG32
  • RG32_SIGNED
  • RGB24
  • RGB24_SIGNED
  • RGB48
  • RGB48_SIGNED
  • RGB565
  • RGB9e5Float
  • RGBA32
  • RGBA32_SIGNED
  • RGBA4444
  • RGBA64
  • RGBA64_SIGNED
  • RGBAFloat
  • RGBAHalf
  • RGFloat
  • RGHalf
  • RHalf

对于所有其他格式,SetPixels32 都会失败。当 SetPixels32 失败时,Unity 会抛出异常。

其他资源:SetPixelsSetPixelDataGetPixels32GetPixelsApplyGetRawTextureDataLoadRawTextureDatamipmapCount

using UnityEngine;

public class Example : MonoBehaviour { // This script tints a texture's mipmap levels with different colors.

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

// Duplicate the original texture and assign to this GameObject's material. Texture2D texture = (Texture2D)Instantiate(rend.material.mainTexture); rend.material.mainTexture = texture;

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

// For each mipmap level, use GetPixels to fetch an array of pixel data, and use SetPixels32 to fill the mipmap level with one color. 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); }

// Copy the changes to the GPU, and don't recalculate mipmap levels. texture.Apply(false); } }

声明

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

参数

x 放置像素块的 x 坐标。范围为 0 到 (纹理宽度 - 1)。
y 放置像素块的 y 坐标。范围为 0 到 (纹理高度 - 1)。
blockWidth 要设置的像素块的宽度。
blockHeight 要设置的像素块的高度。
colors 要使用的像素颜色数组。这是一个展平为一维数组的二维图像。必须为 blockWidth x blockHeight 长度。
miplevel 要将 colors 写入的 Mipmap 级别。范围为纹理的 Texture.mipmapCount0 开始。默认值为 0

描述

设置 Mipmap 级别一部分的像素颜色。

此版本的 SetPixels32 设置 Mipmap 级别的一部分,而不是整个 Mipmap 级别。