我目前正在使用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
的转换是我的记忆问题所在,但我没有找到任何解决方法。
或者最终:是否有更好的方式来下载/存储图像?如果图像从一开始就在应用程序的资源中,我似乎没有在同一设备上显示它的任何问题。也许有一种方法可以下载纹理,同时应用资源在构建应用时获得的压缩算法?
答案 0 :(得分:0)
在加载纹理后使用 'new_password' => ['required','min:8',new PasswordRule()],
'confirm_password' => ['required','same:new_password',new PasswordRule()]
将纹理压缩至少 90%。