- Home /
 
Can't create a 2D sprite with Sprite.Create when creating texture in code
I've been having problems with the Sprite.Create function lately. I'm using C# to program a box with a border that can stretch and change size, but I didn't want the white border to stretch. I tried to create my own texture, and when I printed out the values of some pixels, it seemed like that worked fine. But when I used the texture for Sprite.Create, it didn't work and just showed a gray square. Here is the code:
  void updateSprite(){
      transform.localScale = new Vector3 (scale.x, scale.y, 0);
      SpriteRenderer rend = GetComponent<SpriteRenderer>();
      Texture2D tex = new Texture2D ((int)(100*scale.x), (int)(100*scale.y));
      for (int y = 0; y < tex.height; y++) {
          for(int x = 0; x < tex.width; x++){
              if(y < 2 || x < 2 || y >= tex.height-2 || x >= tex.width-2){
                  tex.SetPixel(x, y, Color.white);
              }else{
                  tex.SetPixel(x, y, Color.black);
              }
          }
      }
      print (tex.GetPixel (0, 0) + "," + tex.GetPixel(3, 3) + "," + tex.GetPixel(tex.width-1, tex.height-1));
      Sprite spr = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f));
      rend.sprite = spr;
  }
 
               The scale variable is a Vector2 that I can change before drawing the sprite so it doesn't stretch. Thanks for your help.
not sure why your texture is not right, but alternatively your could make one using https://docs.unity3d.com/$$anonymous$$anual/9SliceSprites.html
Answer by bcapdevila · May 30, 2017 at 03:44 PM
You need to make a call to texture.Apply() to make changes effective. Then, it will show the good image instead of grey. I tested your code. 
Your answer
 
             Follow this Question
Related Questions
Texturing custom 2d sprite 0 Answers
How do I fill a Texture2D with pixels and display a sprite with that texture using script? 1 Answer
Changing one keyframe in my animation changes all of them 2 Answers
Displaying Prefab Sprite as Texture on GUI Elements 0 Answers
Loading images from AssetBundle 1 Answer