Texture2D.SetPixel 设置像素颜色

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


Sets pixel color at coordinates (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 & y) ? Color.white : Color.gray);
                texture.SetPixel(x, y, color);
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!
	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 的调用

参见: SetPixels, GetPixel, Apply.

Page last updated: 2012-8-22