2017-04-23 8 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; 
}` 

スケール変数は、私はそれがストレッチしないように、スプライトを描画する前に変更することができますベクトル2である:ここではコードです。 ご協力いただきありがとうございます。私はUnity 5を使っています。もしそれが何か関係があれば。

+0

「scale.x」と「scale.y」にはどのような値を使用していますか? – Hristo

+0

私は12と2を使用しています。それはあなたが得ているものなら常に0以上です。 –

答えて

0

私はそれを理解しました。それは実際には本当に簡単でした。まず、エディタのSpriteRendererに「ダミー」テクスチャを追加する必要がありました。また、変更を適用するためにtex.Apply()を追加する必要がありました。

関連する問題