联系我们

小丸工具箱官方网站

小丸工具箱编码帧率(小丸工具箱高清参数)

发布者:小丸工具箱发布时间:2022-07-21访问量:178

前言

项目上需要加载多个地图小丸工具箱编码帧率,每个地图的贴图将近200M,所有地图加起来贴图将近2G。因此,想着能不能将贴图放到工程外加载,逐研究了一下,得出了三种加载方式,分别是WWW加载、C#原生的IO加载在转换成Texture2D和Assetbundle打包和加载。

前面两种方式都会存在卡顿现象,因为最消耗性能的计算方式最终都还是放在主线程里。尽管第二种方式可以使用另外一个线程加载图片成Bytes数组,但是将字节数组转成成Texture2D还是在主线程里,而这个过程在图片5M的时候还是很卡顿,何况小丸工具箱编码帧率我的地形贴图每张有20M左右。对于前面两种方式没有找到任何其他好的优化方式来解决。第三种方式是我用到最理想的,在加载的过程中不会有卡顿。

WWW加载

首先,获取当前工程同目录下的“MapImages”文件夹路径,然后获取每张图片的全部路径,并将路径存到列表中。

展开全文

然后根据路径列表使用WWW逐个加载图片

效果图如图所示:一开始显示的是默认模糊处理的贴图,在加载的过程中帧率非常低,造成卡顿。

这里的地形贴图都很大,就算单张图片压缩到4M左右,使用LoadImage方法还是会卡顿。而这个方法又只能在主线程里使用,也即不能在新开的加载线程里使用。Unity对这类的类都限制了,只能在主线程使用。

Assetbundle打包再加载

首先,要将贴图导入到Unity工程里面,然后对一个文件夹里的贴图进行打包。.0之后的打包方式比较简单,如图所示:

先选中要打包的贴图,在Inspectors面板下有个AssetBundle,这里新建你要打包成集合的名字,我以文件夹的名字新建了一个标签“40_73.4_36.69237_77.61875”。选中文件夹里其他图片,将它们都设置成这个标签。这样就可以将整个文件夹里的图片打包成一个集合,方便一次性加载。

打包的代码和简单,可以在Editor文件下,创建一个编辑脚本,代码如下:

对比以前的方式,新的打包方法确实简化方便了很多。接下来将打包好的Assetbundle文件夹放到工程的同级目录下,加载Assetbuudle的代码如下:

加载得到集合包,然后根据每个图片的文件名得到具体的图片。最终的效果图如图所示:

可以看到帧率几乎不受任何影响,但是会在加载到显示的过程中停留2秒时间左右,对于程序的卡顿,这个时间的停滞还是可以接受的。

总结

虽然,第三种方式在加载的时候比较流畅,不会影响到主线程的执行。但是,打包的过程也是一个很繁琐,且需要细致认真的工作。总的来说第三种方式最好的,前面两种方式应该用在其他方面,几天的研究算是作为一个记录,或许以后就能用的上。最后附上三种方式的工程文件和贴图,

阅读原文参与留言交流,工作一直很忙,对没有看到留言并及时回复的童鞋表示抱歉。