Unity发布小游戏(四):小游戏资源打包配置

上一篇介绍了项目InstantGame包的安装和一些项目设置。小游戏的最大特点是玩家不需要下载安装独立apk,大部分资源放在云服务器端,游戏首包很小,其他的资源是按需下载。因此针对小游戏资源需要做上传到云服务端的打包设置。

首先,打开Unity-Window-AutoStreaming菜单,是管理和发布上传小游戏资源的面板。

(1)Texture Streaming文理贴图资源配置。

PlaceHolder是指Instant Game用placeholder图片替换游戏首包内的原始贴图,游戏运行时,先加载低分辨率/低信息量的贴图,快速启动游戏。当游戏首次使用到该Texture资源时,将触发引擎后台线程从CCD云端下载原始贴图,完成后自动替换为原始贴图。

下面是面板一些菜单项功能介绍。

步骤一:检索需要打包的Texture资源。点击Sync Textures,列举出所有游戏项目中引用的Texture资源。

步骤二:生成AB包资源。Ctrl+A全选,并勾选上PlaceHolder选项,这样所有的Texture资源都被勾选上PlaceHolder选项,然后点击Generate AssetBunldes选项生成AB包。【注意】个人建议最好勾选上Force Build,省得忘记是否为Texture重新生成AB包。

步骤三:先点击AB表头,进行从小达到排序。然后取消AB包过小(如小于5kb)Texture资源的PlaceHolder勾选,重新再点击Generate AssetBundles选项,再生成一次AB包。

重新生成AB包后,这样做的目的是为了过滤掉太小贴图资源,它们没必要生成PlaceHolder替代贴图资源。

步骤四:生成PlaceHolder替代资源。点击Generate PlaceHolder选项,为需要生成替代资源的Texture资源生成可替换资源。

如此,关于游戏项目的Texture资源的打包和设置完成啦。

(2)Audio Streaming音效资源配置:将比较大的音效资源(如大于5K)的从游戏的首包/AB中抽离出来,存放到CDD云服务器上去。当游戏首次使用到该Audio资源时,将触发引擎后台线程下载资源数据,完成后自动加载使用。【注意】如果某个Audio勾选了Streaming导致游戏出现问题(勾选Streaming会使Audio的数据延迟,在代码中对该Audio进行了读写操作, 可能出现问题),取消勾选该 Audio即可。

步骤一:点击Sync Audios项同步游戏项目所有引用的音效。

步骤二:Ctrl+A全选,并勾选OnDemandDownload选项,再点击RT Mem表头,进行从小到大排序,再取消那些比较小的音效资源的OnDemandDownload的勾选。

(3)Mesh Streaming 网格资源配置:将比较大的Mesh资源(如大于5K)的从游戏的首包/AB中抽离出来,存放到CDD云服务器上去。当游戏首次使用到该Mesh资源时,将触发引擎后台线程下载资源数据,完成后自动加载使用。【注意】如果某个Mesh勾选了Streaming导致游戏出现问题(勾选Streaming会使Mesh的数据延迟,在代码中对该Mesh进行了读写操作, 可能出现问题),取消勾选该 Mesh即可。

步骤一:点击Sync Meshes选项同步游戏项目所有引用的Mesh资源。

步骤二:Ctrl+A全选,并勾选OnDemandDownload选项,再点击RT Mem表头,进行从小到大排序,再取消那些比较小的Mesh资源的OnDemandDownload的勾选。

(4)Animation Streaming 动画资源配置:将比较大的Animation资源(如大于5K)的从游戏的首包/AB中抽离出来,存放到CDD云服务器上去。当游戏首次使用到该Animation资源时,将触发引擎后台线程下载资源数据,完成后自动加载使用。【注意】如果某个Animation勾选了Streaming导致游戏出现问题(勾选Streaming会使Animation的数据延迟,在代码中对该Animation进行了读写操作, 可能出现问题),取消勾选该 Animation即可。

步骤一:点击Sync Animations选项同步游戏项目所有引用的Animation资源。

步骤二:Ctrl+A全选,并勾选OnDemandDownload选项,再点击RT Mem表头,进行从小到大排序,再取消那些比较小的Animation资源的OnDemandDownload的勾选。

(5)Scene Streaming场景资源配置:把需要Streaming处理的场景打包成AB包,并上传到CCD云服务器去,我们可以通过 SceneManager 调用 LoadScene/LoadSceneAsync。底层将自动触发下载,完成后自动加载场景。【注意】为了实现场景按需加载,且避免多个场景共同引用的资源重复打包,导致场景AB包太大,浪费场景加载时间和流量。因此,建议场景资源打包规则如下:

a.各场景分别打成一个AB包;

b.针对场景共同引用的资源,大小最好不要超过5M,且该资源被剥离前后,对场景总AB包大小影响很严重的,才进行独立打包AB包。

【特别提醒】Scene Streaming 依赖于 Texture/Audio/Mesh/Animation/Font Streaming的配置,请务必先执行前面的操作。

步骤一:点击Sync Scenes项同步需要打包的场景。

步骤二:勾选上需要Streaming的场景的OnDemandDownload选项。再点击Sync SharedAssets选项同步所有场景共同引用的资源。

步骤三:根据上述的关于场景共享资源独立打成AB包的规则,在资源上勾选IsSharedAssets。

步骤四:勾选上ForceRebuild,点击Generate Abs项,生成AB包。

(6) 游戏自定义AB/Addressable重打包(可选):假如游戏使用了游戏AB/Addressable,则需要我们重新对游戏中之前自定义的Bundle资源重新再打包一次(删除已有AB, 再打包)。

这样可以减小自定义的Bundle资源的AB包体积,因为重打包抽出了那些已经配置需要上传到CCD云服务上的Texture/Mesh等资源。

【特别提醒】但它的打包依赖于 Texture/Audio/Mesh/Animation/Font Streaming的配置,请务必先执行前面的操作

众所周知,Unity有2种方案指定哪些资源被打到哪个AB包中。

第1种是在UnityEditor的Inspector中设置资源的AssetBundle名称。【官方默认打包方式】

步骤一:先手动为需要打包的资源设置AB包名

步骤二:重新打包,使用Unity自带AB打包工具执行就可以完成打包。

第2种是通过BuildPipeline.BuildAssetBundles(string outputPath, AssetBundleBuild[] builds, …)在代码中动态指定。【开发者自写的AB打包工具】

对于第二种情况,目前无法自动搜索出这些AB、以及他们引用了哪些资源。因此需要用户提供AB中的资源列表。在Auto Streaming -> Publish窗口, 点击Custom AB Assets右侧的Browse 按钮选择一个文本格式的资源列表文件(首行为资源总数,之后每行为一个资源路径)。这个文件中只需要提供root资源即可,root资源依赖的其它资源可以被工具自动搜索到。

步骤一:创建一份需要自定义打包的资源的清单如上格式,并在小游戏配置面板Custom AB Assets中指定它。

步骤二:使用自写AB打包工具,重新打包。

猜你喜欢

转载自blog.csdn.net/hppyW/article/details/123606240