Unity - Texture2D.Loadimage导致MemoryWarning

时间:2018-03-19 10:47:19

标签: unity3d texture2d ipad-mini memory-warning

我目前正在使用Unity(手机/平板电脑)上的2D项目,我使用UnityWebRequestTexture.GetTexture(url)下载了一些重型图片,然后使用File.WriteAllBytes(filePath, webRequest.downloadHandler.data)存储。

在项目的后期,我需要在RawImage元素上显示下载的图片。为了避免阻止应用程序,我通过FileStream在一个单独的线程上读取字节,这很有效。

但是当我(从主线程)((Texture2D) myRawImage.texture).LoadImage(loadedBytes)调用时,我的Profiler显示了一个巨大的峰值,如果大多数设备正确处理它,在iPad Mini上我经常会在这一点上获得一个MemoryWarning。重复时,会导致应用程序被iOS强制关闭。

有关信息,下载的图像大小取决于询问它的设备。我们最初打算在iPad Mini上显示2048x1536图片,但我们在每个显示器上都有MemoryWarning。我们现在使用750x1334,但我们仍然会不时获得MemoryWarning。

我的问题是:有没有更好的方法来执行“LoadImage”步骤?我相信从byte[]Texture2D的转换是我的记忆问题所在,但我没有找到任何解决方法。

或者最终:是否有更好的方式来下载/存储图像?如果图像从一开始就在应用程序的资源中,我似乎没有在同一设备上显示它的任何问题。也许有一种方法可以下载纹理,同时应用资源在构建应用时获得的压缩算法?

1 个答案:

答案 0 :(得分:0)

在加载纹理后使用 'new_password' => ['required','min:8',new PasswordRule()], 'confirm_password' => ['required','same:new_password',new PasswordRule()] 将纹理压缩至少 90%。

Reference