返回介绍

Texture2D.GetPixels32 获取32位像素块颜色

发布于 2019-12-18 15:38:39 字数 3249 浏览 1005 评论 0 收藏 0

JavaScript => public function GetPixels32(miplevel: int = 0): Color32[];
C# => public Color32[] GetPixels32(int miplevel = 0);

Description 描述

Get a block of pixel colors in Color32 format.

获取Color32格式的像素颜色块。

This function returns an array of pixel colors of the whole mip level of the texture.

这个函数返回整个纹理mip level的像素颜色数组。

The returned array is a flattened 2D array, where pixels are laid out left to right, bottom to top (i.e. row after row). Array size is width by height of the mip level used. The default mip level is zero (the base texture) in which case the size is just the size of the texture. In general case, mip level size is mipWidth=max(1,width>>miplevel) and similarly for height.

返回的数组是二维数组,像素布局从左到右,从底到顶(即,一行行),数组的大小是使用mip level的宽乘高。默认的mip level为0(基本纹理),这时候数组的大小是纹理的大小。在一般情况下,mip level大小是mipWidth=max(1,width>>miplevel) ,高度也同样。

The texture must have the Read/Write Enabled flag set in the import settings, otherwise this function will fail.

纹理必须开启导入设置中的Read/Write Enabled标识,否则该函数会产生错误。

Using GetPixels32 can be faster than calling GetPixel repeatedly, especially for large textures. In addition, GetPixels32 can access individual mipmap levels.

使用GetPixels32比重复调用GetPixel32执行更快,尤其对于大纹理。此外,GetPixels32可以访问单个mipmap级别。

JavaScript:

// Rotate an image 180 degrees by reversing the order
// of the pixels.
 
// Source texture.
var sourceTex: Texture2D;
 
 
function Start () {
	// Get the pixel block and reverse the array to
	// rotate the image.
	var pix = sourceTex.GetPixels32();
	System.Array.Reverse(pix);
 
	// Copy the reversed image data to a new texture.
	var destTex = new Texture2D(sourceTex.width, sourceTex.height);
	destTex.SetPixels32(pix);
	destTex.Apply();
 
	// Set the current object's texture to show the
	// rotated image.
	GetComponent.<Renderer>().material.mainTexture = destTex;
}

C#:

using UnityEngine;
using System.Collections;
 
public class ExampleClass : MonoBehaviour {
    public Texture2D sourceTex;
    void Start() {
        Color32[] pix = sourceTex.GetPixels32();
        System.Array.Reverse(pix);
        Texture2D destTex = new Texture2D(sourceTex.width, sourceTex.height);
        destTex.SetPixels32(pix);
        destTex.Apply();
        GetComponent<Renderer>().material.mainTexture = destTex;
    }
}

See Also: SetPixels, mipmapCount.

Texture2D

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文