1

我最近遇到了 Sprite.Create 函数的问题。我正在使用 C# 编写一个带有可以拉伸和更改大小的边框的框,但我不希望白色边框拉伸。我尝试创建自己的纹理,当我打印出一些像素的值时,看起来效果很好。但是当我将纹理用于 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;
}`

scale 变量是一个 Vector2,我可以在绘制精灵之前更改它,这样它就不会拉伸。谢谢你的帮助。我正在使用 Unity 5,如果这与它有关的话。

4

1 回答 1

0

我想到了。其实很简单。首先,我必须在编辑器中向 SpriteRenderer 添加一个“虚拟”纹理。我还必须添加 tex.Apply() 来应用更改。

于 2017-04-27T11:49:49.817 回答