游戏资源打包过程是怎样的?

您所在的位置:网站首页 ppc游戏软件打包 游戏资源打包过程是怎样的?

游戏资源打包过程是怎样的?

2023-03-29 16:31| 来源: 网络整理| 查看: 265

这里我以Unity的AssetBundle打包为例来说吧,希望对题主有一定帮助。

国内的手游大多要考虑热更新,因此AssetBundle打包是必备的程序技能。打包代码好写,但是打包策略却难做。

首先说分包

题主是想直接将游戏资源划分成不同类型的包,直接每个资源一个包来做,这样有一个读取时间问题和峰值内存问题。

比如说我们有两个场景,场景A和场景B,场景A的纹理资源如果和场景B的纹理资源打成一个包后,我们只要加载场景A就会去解包两个场景大小的资源,这是很浪费时间的。

因此我们除了会对类型分包,还要对功能进行分包

比如场景A和场景B,最后会分成:场景A美术资源包、场景B美术资源包、公用场景资源包。这个资源包的内容会包括这个场景用到的贴图、网格、材质球、动画相关的信息。

针对不同类型的美术资源采取的分包思路也不一样,比如UI资源。王者荣耀在一开始就把所有UI图片资源加载到内存中,目的是为了切换界面都不会存在加载卡顿现象。同时对UI的图集进行了优化,不会让内存肆意暴走。所以UI的分包只用关心图集就好了,图集美术改动了哪个图集下次更新就只更新这个图集,不会更新到不相关的UI资源。

关于解包

主要目的是将包里的资源加载到我们的游戏中去,如果要在游戏中运行流畅不卡,肯定是要做预加载的,就是在进入场景的时候把会用到的资源全部解包,然后将资源取出后把包卸载。而像buff特效或者部分在游戏中随机出现的资源,可以做动态的加载处理(使用的时候逐渐解包)。

但是在这里有一个重点是,部分通用资源是不会卸载的,比如说shader资源。这种资源是在游戏进入的时候加载好后就常驻内存了。

关于包的大小

是肯定会有取舍的,分的越细小,更新的时候下载的资源的冗余就会越少。分的越大,加载时的IO也越低,但是解包过程的内存可能会产生比较高的峰值。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3