Unity: Combinar 2 textures por código

Una pregunta frecuente por alumnos en la clase de Unity es como combinar 2 texturas / imagenes en una sola sin usar un shader.

Esto se logra creando una copia de la TexturaA y sobre esta copiamos los pixeles de TexturaB, con 2 for anidados y solo debemos verificar que si el pixel a copiar no es completamente transparente (color.a > 0.0f) pasamos a copiar el pixel, en caso contrario lo ignoramos.

Texture2D CombineTexutes(Texture2D _textureA, Texture2D _textureB)
{
//Create new textures
Texture2D textureResult = new Texture2D(_textureA.width, _textureA.height);
//create clone form texture
textureResult.SetPixels(_textureA.GetPixels());
//Now copy texture B in texutre A
for (int x = 0; x<_textureB.width; x++)
{
for (int y = 0; y<_textureB.height; y++)
{
Color c = _textureB.GetPixel(x, y);
if (c.a > 0.0f) //Is not transparent
{
//Copy pixel colot in TexturaA
textureResult.SetPixel(x, y, c);
}
}
}
//Apply colors
textureResult.Apply();
return textureResult;
}

Dejo aquí un link de descarga del projecto del gif: DESCARGAR

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.