・やりたいこと
ピクセルごとのカラー情報からTexture2Dを生成してSpriteとして表示したい。
・問題
どんな色を指定してもグレーになってしまう。
c#
1 2 private void ShowSample() 3 { 4 SpriteRenderer sr = GameObject.Find("test").GetComponent<SpriteRenderer>(); 5 6 Color[,] colorArray = new Color[128, 128]; 7 int width = colorArray.GetLength(0); 8 int height = colorArray.GetLength(1); 9 for (int y = 0; y < height; y++) { 10 for (int x = 0; x < width; x++) { 11 // とりあえず1色でお試し 12 // colorArray[x, y] = new Color(1, 0, 0, 1); 13 colorArray[x, y] = Color.green; // ★ここをいくら変えても色が変わらない 14 } 15 } 16 // Color配列からTexture2Dを生成 17 Texture2D texture = CreateTexture(colorArray); 18 // Texture2DからSpriteを生成 19 Sprite sprite = CreateSprite(texture); 20 21 sr.sprite = sprite; 22 } 23 24 /// <summary> 25 /// Colorの二次元配列からTexture2Dを生成 26 /// </summary> 27 /// <param name="colorArray"></param> 28 /// <returns></returns> 29 public static Texture2D CreateTexture(Color[,] colorArray) 30 { 31 int width = colorArray.GetLength(0); 32 int height = colorArray.GetLength(1); 33 var texture = new Texture2D(width, height, TextureFormat.RGBA32, false); 34 35 for (int y = 0; y < texture.height; y++) { 36 for (int x = 0; x < texture.width; x++) { 37 texture.SetPixel(x, y, colorArray[x, y]); 38 } 39 } 40 return texture; 41 } 42 43 /// <summary> 44 /// Texture2DからSpriteを生成 45 /// </summary> 46 /// <param name="tex"></param> 47 /// <returns></returns> 48 private Sprite CreateSprite(Texture2D tex) 49 { 50 return Sprite.Create( 51 tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); 52 } 53
◆環境
Unity2020.3.0f1
Windows10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/12 03:37