android – 无缝异步场景和纹理加载 – Unity和GearVR

我在使用三星S6的GearVR上的Unity(5.3.4p1)遇到两个主要问题:

1)异步场景加载.是否有任何变化我可以在背景中加载新场景而不会看到小的冻结?场景有~60k三角形,使用了几个4k纹理和~10个其他2k纹理.
当这个场景加载时,有多个短暂的冻结.我知道我可以通过淡出黑色然后开始加载级别来避免这种情况.但是需要大约10秒钟,用户可能会因为看到黑色屏幕而长时间使用VR耳机而感到困惑.

2)使用WWW类下载的图像创建纹理.我在另一个场景中使用360 4k图像显示在圆顶上.当我尝试在运行时下载纹理(4k,PNG或JPG)时,它是异步完成的.但是当我使用时,Unity会冻结2-3秒:

Texture2D myTexture = www.texture;

除了使用下载的字节并在背景上使用非Unity算法解压缩JPG或PNG然后将创建的rgb值加载到新纹理之外,有没有其他选项可以避免这种情况吗?
在Flickr VR应用程序中可以看到平滑纹理加载的好例子,但我怀疑他们使用Unity来创建这个应用程序.

这两个问题也出现在Oculus Rift上,但由于PC性能要好得多,因此不太明显.

通常,我希望使用Unity在Gear VR中实现平滑的加载体验.这有点可能吗?

最佳答案
这个问题本应作为两个单独的问题发布,但仍然是:

AD 1:添加一个小的预加载器场景,将其呈现给用户并加载主场景.时间扭曲应该仍然有效,因此可以看到头部方向的变化.

AD 2:Android设备无法呈现jpeg或png.他们必须将它们解压缩到非常大的未压缩纹理,再次加载到内存然后才渲染.这需要大量的ram和时间.

你可以做的是拥有原生DXT或ETC格式的纹理,并自己将它们加载为纹理.我有同样的问题,这加快了我的纹理加载几乎10倍.他们也使用更少的内存.

请注意,下载大小会更大,并且根据纹理格式,您可能必须为不同平台提供不同的文件.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...