2015-11-12 38 views
3

我正在完成我正在放置资产商店的资产。现在,其中一个功能需要精灵的平均颜色。现在我有一个公共颜色来查找平均颜色,用户可以使用颜色选择器或色轮或其他来选择他们认为看起来像精灵的平均颜色。我想这样做,脚本自动计算平均精灵颜色,因此通过消除人为错误提高精度,并通过不浪费用户猜测平均精灵颜色的时间来提高效率。如何获得精灵的平均颜色? (Unity3d)

回答

4

那么在Unity论坛中有一篇关于它的文章。 Here的链接。答案是:

Color32 AverageColorFromTexture(Texture2D tex) 
{ 

     Color32[] texColors = tex.GetPixels32(); 

     int total = texColors.Length; 

     float r = 0; 
     float g = 0; 
     float b = 0; 

     for(int i = 0; i < total; i++) 
     { 

      r += texColors[i].r; 

      g += texColors[i].g; 

      b += texColors[i].b; 

     } 

     return new Color32((byte)(r/total) , (byte)(g/total) , (byte)(b/total) , 0); 

} 
+0

好了,我尝试这样做: TransitionColor = AverageColorFromTexture(gameObject.GetComponent ()sprite.texture); 我收到一条错误消息,说明纹理不可读。 – user3738071

+1

@ user3738071在编辑器中的Inspector的设置中将纹理标记为可读(您将不得不将纹理类型切换为_Advanced_) – Roberto