【发布时间】:2023-03-26 08:40:01
【问题描述】:
我正在尝试为 android 创建一个统一的角色自定义。现在的场景是我有一个纹理 2D 的服装模型,还有一些用户可以在这个模型上应用的图案和颜色。现在,当用户将图案应用到连衣裙上时,我需要更改要以该图案显示的连衣裙。对于颜色,我能够将 rgb 值更改为所需的颜色值。但是对于图案,我需要遍历连衣裙的每个像素,并将图案对应的颜色应用于连衣裙的像素。我通过以下代码实现了这一点。
IEnumerator Print() {
Texture2D tex = DressTexture;
Color32[] DressColor = tex.GetPixels32();
Color32[] PatternColor = PatternTexture.GetPixels32();
int j = 0;
Texture2D NewDressPattern = new Texture2D(tex.width, tex.height, TextureFormat.ARGB32, false);
for(int i = 0; i < DressColor.Length; i++) {
if(DressColor[i].a != 0) {
DressColor[i] = PatternColor[j];
j++;
if(j == PatternColor.Length - 1) {
j = 0;
}
}
else {
j = 0;
}
yield return null;
}
NewDressPattern.SetPixels32(DressColor);
NewDressPattern.Apply();
Debug.Log("texture created");
Sprite spr = Sprite.Create(NewDressPattern, new Rect(0, 0, tex.width, tex.height), Vector2.zero);
Debug.Log("sprite created");
sprite.sprite = spr;
}
现在的问题是此操作太慢而无法完成。任何有关实现这一目标的更好方法的建议都会非常有帮助。我也不太了解着色器。
【问题讨论】:
标签: android opengl-es unity3d shader