1.需求
在一层特殊纹理基础上蒙皮另一张纹理。只要采用像素相乘既可以实现。
2.实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
[ExecuteInEditMode]
public class TextureCreator : MonoBehaviour
{
public Texture2D t2d;
public Texture2D mask;
public RawImage rawImage;
private int width;
private int height;
private void CreateT2d()
{
width = t2d.width;
height = t2d.height;
Texture2D createdT2d = new Texture2D(width, height);
Color[] colors = new Color[width * height];
float offset = 100;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
int index = i * width + j;
//底色,随便计算的
Color createdColor = new Color((i + offset) / 255, (j + offset) / 255, 0);
//形状纹理采样
Color t2dColor = t2d.GetPixel(i, j);
//蒙皮纹理
Color maskColor = mask.GetPixel(i, j);
//合成主纹理
colors[index] =createdColor * t2dColor * maskColor;
}
}
createdT2d.SetPixels(colors);
createdT2d.Apply();
rawImage.texture = createdT2d;
}
void Start ()
{
CreateT2d();
}
}