Unity2D:Sprite.Create 无法满足我的需要
Unity2D: Sprite.Create doesn't work with what I need it to
我最近在使用 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,我可以在绘制 sprite 之前更改它,这样它就不会拉伸。
谢谢你的帮助。我正在使用 Unity 5,如果这与它有任何关系的话。
我想通了。其实很简单。首先,我必须在编辑器中向 SpriteRenderer 添加一个 "dummy" 纹理。我还必须添加 tex.Apply() 以应用更改。
我最近在使用 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,我可以在绘制 sprite 之前更改它,这样它就不会拉伸。 谢谢你的帮助。我正在使用 Unity 5,如果这与它有任何关系的话。
我想通了。其实很简单。首先,我必须在编辑器中向 SpriteRenderer 添加一个 "dummy" 纹理。我还必须添加 tex.Apply() 以应用更改。