Texture2D.SetPixel 设置像素颜色

function SetPixel (x : int, y : int, color : Color) : void

Description描述

Sets pixel color at coordinates (x,y).

在坐标(x,y)设置一个像素的颜色

Call Apply to actually upload the changed pixels to the graphics card. Uploading is an expensive operation, so you'll want to change as many pixels as possible between Apply calls.

调用Apply实际上将结果以像素为单位更新到显卡上,这是一个代价很高的操作,因此你要在调用 Apply前尽可能多的更改像素

If you're constantly regenerating a texture at runtime, it may be faster to generate an array of pixel colors and set all of them at once with SetPixels.

如果你需要在运行时不断地重新计算纹理,或许生成一个像素颜色组并一次调用 SetPixels 会更快一些

This function works only on ARGB32, RGB24 and Alpha8 texture formats. For other formats SetPixel is ignored. The texture also has to have Is Readable flag set in the import settings. See Also: SetPixels, GetPixel, Apply.

这个函数只工作在格式为ARGB32 和 RGB24以及Alpha8位的纹理上,对于其他格式SetPixels 将会被会略,另外这个纹理的导入设置需要设置为 Is Readable(可读)

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
	void Start() {
		Texture2D texture = new Texture2D(128, 128);
		renderer.material.mainTexture = texture;
		int y = 0;
		while (y < texture.height) {
			int x = 0;
			while (x < texture.width) {
				Color color = x & yColor.whiteColor.gray;
				texture.SetPixel(x, y, color);
				++x;
			}
			++y;
		}
		texture.Apply();
	}
}
function Start () {
	// Create a new texture and assign it to the renderer's material
	//创建一个新的贴图并将它分配给渲染材质
	var texture = new Texture2D(128, 128);
	renderer.material.mainTexture = texture;

	// Fill the texture with Sierpinski's fractal pattern!
	//使用Sierpinski's分形图案填充纹理!
	for (var y : int = 0; y < texture.height; ++y) {
		for (var x : int = 0; x < texture.width; ++x) {
			var color = (x&y) ? Color.white : Color.gray;
			texture.SetPixel (x, y, color);
		}
	}
	// Apply all SetPixel calls
	//应用全部 SetPixel 的调用
	texture.Apply();
}

参见: SetPixels, GetPixel, Apply.

最后修改:2010年12月17日 Friday 23:54

本脚本参考基于Unity 3.4.1f5

英文部分版权属©Unity公司所有,中文部分© Unity圣典 版权所有,未经许可,严禁转载 。