【问题标题】:Unity texture from disk has low resolution来自磁盘的 Unity 纹理分辨率低
【发布时间】:2017-01-12 19:38:32
【问题描述】:

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

我在做什么:

-> 从 url 下载图片。下载图像后,我将纹理以 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 加载纹理时,它的分辨率似乎很好(因为它是原始的)。当它从缓存加载时,它会衰减到较低的缓存。 有人可以告诉我我错过了什么,或者即使有办法解决它? 提前致谢。

【问题讨论】:

  • 当您第二次运行时,检查导入的 .png 图像的 Inspector 属性。最有可能的压缩和比特大小需要调整

标签: unity3d png textures sprite


【解决方案1】:

您可以在创建精灵时重载纹理,方法与使用矩形相同,并在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));

【讨论】:

  • 您好,由于生成了 mip 贴图,因此显示低分辨率图像,该贴图在保存到磁盘时进行了检查。问题是,即使我使用上述方法(使用 bool mipmap),它仍然会创建一个选中“生成 mip 映射”的精灵。
猜你喜欢
  • 2020-11-14
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 2020-08-03
相关资源
最近更新 更多