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



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

然而,在项目中大约40个图像后,XCode返回terminated due to memory错误。所以问题是,我需要什么类型的图像,以及什么样的偏好才能使它们工作?

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

我还需要使用很多全屏图像(大约100张图像,尺寸为2048x1536),例如Gallery。

我认为你的2048 × 2048大小的图像使用了非常大的内存区域。基本上,2048个图像使用16MB内存。所以,这种情况下需要使用大约1600MB的内存!正常应用程序不超过200mb。

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

  1. 请记住,这个纹理将被unity扩展为2048 × 2048。(http://www.opengl.org/wiki/NPOT_Texture)所以,如果你要减少文件大小到1500x1000,你的应用程序仍然使用2048x2048图像。但是如果您可以将文件大小减小到1024x1024,那么就这样做吧。

  2. 如果你可以使用纹理压缩。使用它。PVRTC 4位(https://docs.unity3d.com/Documentation/Manual/ReducingFilesize.html)压缩是使文件大小比真彩色的1/8。内存大小也会减小。(可能减半)

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

好运:D

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

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

最好的方法是使用较小的纹理。在ipad上,你需要一个放大镜来真正欣赏1024x1024和更大纹理之间的区别。请记住,ipad屏幕比电脑屏幕小(7英寸~10英寸),如果启用了过滤功能,真的很难分辨出区别。

如果出于其他原因(缩放或类似),您仍然需要manager如此大的纹理,我建议您使用以下方法之一:

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

尽量避免使用这么大的纹理

最新更新