2017-04-23 120 views
1

最近我一直在使用Sprite.Create函數。我正在使用C#編寫一個可以拉伸和更改大小的邊框,但我不想讓白色邊框伸展。我試圖創建自己的紋理,並且當我打印出一些像素的值時,它似乎很好。但是當我使用Sprite.Create的紋理時,它不起作用,只顯示一個灰色方塊。下面是代碼:Unity2D:Sprite.Create不支持我需要的功能

`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; 
}` 

規模變量是一個Vector2,我可以繪製精靈,因此不會伸展之前改變。 感謝您的幫助。我使用的是Unity 5,如果這與它有任何關係。

+0

你爲scale.x和scale.y使用了什麼值? – Hristo

+0

對於我正在使用12和2.它總是超過0,如果這就是你在 –

回答

0

我想通了。這其實很簡單。首先,我必須在編輯器中爲SpriteRenderer添加「虛擬」紋理。我還必須添加tex.Apply()以應用更改。