在i3上使用NGUI的Unity3d中使用大纹理(2048 * 1536)的最佳方法是什么?

时间:2014-05-14 03:15:02

标签: ios unity3d textures ngui

我正在使用Unity3d(4.3.1)和NGUI来创建一个2D(iOS)应用程序。另外,我需要使用大量全屏图像(大约100张图像,大小为2048x1536),例如Gallery。 现在我使用GUI类型,覆盖iPhone,最大尺寸为2048,压缩质量:正常。我正在使用带有Unlit / Transparent着色器的UITexture来显示它们。

但是,在项目中大约40个图像后,XCode会返回terminated due to memory错误。所以问题是,我需要什么类型的图像,以及使它们有效的偏好?

我正在使用iPad 3作为XCode 5.1.1的测试设备。我会感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

  

另外,我需要使用大量全屏图像(大约100张图像,大小为2048x1536),例如Gallery。

我认为您的2048x2048尺寸图像使用非常大的内存区域。基本上,2048图像使用16MB内存。所以,这种情况需要使用大约1600MB的内存!正常应用程序不超过大约200 MB。

所以,我认为你需要使用内存来减少:

  1. 请记住,此纹理将按统一扩展2048x2048。(http://www.opengl.org/wiki/NPOT_Texture)因此,如果要将文件大小减小到1500x1000,则应用程序仍使用2048x2048图像。但是如果你可以将文件大小减小到1024x1024,那就去做吧。 1024图像只使用4 MB内存。

  2. 如果可以使用纹理压缩。用它。 PVRTC 4位(https://docs.unity3d.com/Documentation/Manual/ReducingFilesize.html)压缩使文件大小为真实颜色的1/8。内存大小也将减少。(可能减少到一半)

  3. 如果您的应用程序未显示所有图像,请动态加载图像。用拇指钉。

  4. 祝你好运:D

答案 1 :(得分:0)

如果你想制作一个类似画廊的应用程序来渲染照片,你可以尝试不同的方法:

  • 创建两个大的可编辑纹理并使用图像数据填充纹素(必须是可编辑的,否则您将无法直接将图像数据写入其中)。
  • 如果您仍然遇到内存问题,或者如果您想使用较低内存,则可以使用几个较小的纹理作为图块。您可以将图像部件渲染到每个较小的纹理。请记住正确配置纹理边框,或者不要使用边框纹理以避免包装问题。

答案 2 :(得分:-3)

最好的方法是使用较小的纹理。在ipad中你需要一个放大镜来真正体会1024x1024和更大纹理之间的区别。请记住,ipad屏幕比计算机屏幕小(7“~10”)并且启用过滤功能很难区分。

如果由于某些其他原因(缩放或类似)仍然需要管理员如此大的纹理,我推荐您采用以下方法之一:

  • 将纹理分割为具有Alpha通道(透明度)的图层:通常背景可以使用较低的分辨率进行渲染。
  • 将纹理分割成块:通常大多数纹理都有重复的图案。
  • 使用压缩。

如果可能,请始终避免使用如此大的纹理。