我想在統一爲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;
}
現在問題是這個操作太慢而無法完成。任何更好的方法來達到此目的的建議將會非常有用。此外,我不知道很多着色器。
感謝:例如,下面的代碼使用內置的「漫詳細信息」着色器的Texture2D對象,並把結果渲染紋理結合起來。遊戲使用精靈。爲每個模式創建單獨的精靈是不可能的,因爲這會增加構建大小。如果我有10件禮服和5種圖案,我將不得不製作50個我認爲不太好的精靈。 –
然後最好使用着色器來做。 @gamedevelopmentgerm的回答是我認爲的一個好開始。 –