版本:Unity 6 (6000.0)
语言中文(简体)
  • C#

Cubemap.SetPixels

建议更改

成功!

感谢您帮助我们提升 Unity 文档的质量。虽然我们无法接受所有的提交,但我们确实会仔细审阅用户提出的每一条建议,并在适用时进行更新。

关闭

提交失败

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

关闭

取消

声明

public void SetPixels(Color[] colors, CubemapFace face, int miplevel);

声明

public void SetPixels(Color[] colors, CubemapFace face);

参数

colors 要使用的像素颜色数组。这是展平为一维数组的二维图像。
miplevel 要写入colors的 mipmap 级别。范围是0到纹理的Texture.mipmapCount。默认值为0
face 要写入colorsCubemapFace

描述

设置某一面整层的像素颜色。

此方法为 CPU 内存中的纹理设置像素数据。 Texture.isReadable 必须为true,且您必须在SetPixels后调用Apply才能将已更改的像素上传至 GPU。

Apply是一个耗时的操作,因为它会复制纹理中的所有像素,即使您仅更改了一些像素,因此在调用它之前尽可能更改更多像素。

colors必须按从面部纹理的左下角开始的行写入像素。数组的大小必须为 mipmap 层的宽度 × 高度。

与多次调用SetPixel相比,一次调用SetPixels通常更快,尤其对大型纹理而言。

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

你可以对以下 纹理格式 使用 SetPixels

  • 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

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

其他资源:GetPixelsSetPixelDataApplymipmapCount

// 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(); } }