[Unity]混用Sprite和Texture2D

2019/10 29 17:10

在UI开发过程中,经常会混用Sprite和Texture2D

    public static Sprite LoadSprite(string url)
    {
        Sprite sprite = LoadRes<Sprite>(url, false);
        if (sprite != null)
        {
            return sprite;
        }
        Texture2D tex2D = LoadRes<Texture2D>(url, false);
        if (tex2D != null)
        {
return Sprite.Create(tex2D, new Rect(0, 0, tex2D.width, tex2D.height), new Vector2(0.5f, 0.5f), 100.0f);
        }

        Log.Error("Load Sprite Fail:{0}", url);
        return null;

这样是错误的,正确的规则是:

LoadSprite时,一定要设置纹理为Sprite类型,并且PackingTag不为空
规则1:如果是大的UI程序动态载入的图,不要使用Sprite类型,直接使用Texture2D,不要打图集
规则2:如果是小的UI程序动态载入的图,可以使用Sprite类型,需要设置PackingTag