需求:
拿了一个图片资源 ,放入unity中,用unity 自带裁切功能生成sprite资源,想要在代码中动态的切换这些sprite。
现实情况:
UGUI 没法方便的 类似NGUI通过直接修改图集spriteName 来切换sprite资源,而是需要先加载,然后把 加载到的sprite 赋值给对象的 sptieObj.overrideSprite 属性来实现。
1.texture资源没被裁切时,直接加载使用即可
private void switchSprite() {
Sprite getSp = Resources.Load<Sprite("Atlas/Level_white_numbers"); //加载资源
image.overrideSprite = getSp; //切换sprite
}
2.但是当使用Sprite Editor 将图片资源切换成多份sprite后,需要加载所有sprite
private void switchSprite(string spriteName) {
Sprite[] getSps = Resources.LoadAll<Sprite>("Atlas/Level_white_numbers"); //加载资源中的所有sprite
Sprite getSp = null;
for (int i = 0; i < getSps.Length; i++)
{
if (getSps[i].name == spriteName) { //找到我们需要的sprite
getSp = getSps[i];
break;
}
}
if(getSp != null) image.overrideSprite = getSp; //切换sprite
}