来自磁盘的Unity纹理具有低分辨率

时间:2016-09-05 12:19:44

标签: unity3d png textures sprite

我正在尝试从磁盘加载纹理(并最终从它创建一个精灵)但是精灵渲染为低分辨率图像。

我在做什么:

- >从网址下载图片。下载图像后,我将纹理保存为png到磁盘,以便下次不需要下载。

WWW www = new WWW(url);
yield return www;

if (www.isDone)
{
    if (string.IsNullOrEmpty(www.error))
    {
        Sprite img = Sprite.Create(www.texture, new Rect(0, 0,   www.texture.width, www.texture.height), new Vector2(0, 0));
                reward.RewardSprite = img;

         byte[] bytes = www.texture.EncodeToPNG();
         FileManager.SaveRewardImage(reward.rewardId, bytes);
    }
    else
    {
        Debug.Log(www.error);
    }
 }

- >从磁盘加载

string path = string.Format("Cache\\Venue\\{0}", nameWithoutExtension);

return Resources.Load<Texture2D>(path);

第一次从url加载纹理时,它的分辨率似乎很好(因为它是原始的)。当它从缓存加载时,它会衰减到较低的缓存。 有人能告诉我我错过了什么,或者即使有办法绕过它? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在精灵创建中重叠纹理,方法与使用矩形相同,并以TextureFormat指定所需的格式:

Sprite img = Sprite.Create(
new Texture2D (www.texture.width, www.texture.height, TextureFormat format, bool mipmap),
new Rect(0, 0,   www.texture.width, www.texture.height), new Vector2(0, 0));