因此,我在论坛上阅读了一些有关 Unity 3D 中的 AssetBundles 和 Resources 文件夹的内容,但我无法找出我所面临问题的最佳解决方案。问题是这样的:
我有一个专为独立设计的程序,可以加载充满 .png 和 .jpg 图像的“书籍”。目前,每次程序启动时页面都是相同的。在任何“书”的场景开始时,它都会使用 www.texture 和路径一次性加载所有这些图像。然而,我现在意识到,这可能是一种在运行时访问事物的非高性能方法——它很慢!这意味着当场景开始并且书籍页面图像加载时(在非传奇计算机上),用户在 5-20 秒内无法执行任何操作。所以,我无法弄清楚这三件事中哪一件最快:
1) 每本书加载一个资源包(例如 20 个纹理,每个 1 mb)。
2) 每页加载一个资源包(每个 1 mb)。
3) 前两个选项之一,但从资源文件夹加载。
哪一个会更快,为什么?我知道资源包是通过统一打包的,但这是否意味着内部的纹理将被预压缩并且在加载时更容易占用内存?资源文件夹是否会导致加载时间缩短?是什么赋予了?据我了解,资源文件夹加载到缓存中 - 但这与独立播放器通常使用的缓存相同吗?或者这是额外的、未使用的空间?我想另一个问题是我不确定从内存加载内容和将它们存储在缓存中之间有什么区别。
干杯,伙计们...
资源文件夹是捆绑的托管资产。这意味着 Unity 将按照您在 IDE 中应用的设置来压缩它们。因此,它们在运行时加载效率很高。您可以为每个平台定制压缩,这应该进一步优化性能。
我们昂贵地使用 Resources.Load() 来提取资源,并且它在桌面和移动设备上都表现良好。
还有一个名为 StreamingAssets 的特殊文件夹,您可以使用它来放置捆绑的非托管资源。这是我们放置要在运行时播放的视频的位置,但不希望 Unity 将它们转换为默认的 ogg 编解码器。在移动设备上,这些内容在本机视频播放器中播放。您还可以将图像放在那里并加载它们就像使用 WWW 类一样。速度慢,因为 Unity 需要在加载时清理和压缩图像。
如上所述,由于处理资产的开销,加载 WWW 的速度较慢。但是您可以从服务器或应用程序“沙箱”外部提取数据。
- 仅在用户忙于浏览每本书的第一页时加载显示所需的内容并实现后台进程以获取其他内容。这将避免阻塞 UI 太久。
- 优化图像以减小文件大小。如果您需要透明图像,请使用tinypng,或者坚持使用压缩的JPG
- 尽可能尝试使用 2 的幂图像。这应该会稍微加快运行时处理速度。
ath.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)