Unity构建详解(9)——Addressable的打包结果

这里说的Task不算是真正SBP管线里的了,而是Addressable中自定义的,包括之前的GenerateLocationListsTask和Post Processing AssetBundles都是在Addressable中的。一般使用SBP时都会用上Addressable。

【BuildLayoutGenerationTask】

这个Task是为了生成详细的打包结果,可以看到Bundle的总数、总大小,每个Bundle的大小、包含的Asset及其大小等信息,被保存在buildlayout.txt文件中。

具体是什么样的,打包一次,打开看看这个文件就知道了,不必多说。

这种写文件的Task都可以修改成多线程的

【GenerateCatalog】

Catalog是与Addressable相适配的,Addressable在初始化时就会加载Catelog文件,该文件记录了Bundle之间的依赖关系及其包含的Asset,可以认为是一个简化版的buildlayout,其只包含了运行时所需要知道的必要信息。可以根据项目需要添加新的信息。

Catalog有json文本格式和二进制格式两个版本,这里应该有一个常识,在真机上运行时的要读取的文件都要是二进制格式的,不要搞文本格式。

生成Catalog时有个是否把Catalog打入Bundle的选项,其会又走一遍打包流程,一般来说没有必要。

Catalog有优化,但Unity本身做的优化并不够,还需要单独做优化的,这本质上就是如何优化字符串内存

如果仅仅是SBP,会生成一份Manifest文件,和BuildInt的流程相似,但该文件没有Catalog的信息多。

【GenerateLinkXml】

link.xml是代码裁剪时需要读取的文件,该文件以XML格式记录了需要保留的程序集、类型和成员。详细的在构建时再说。

  •  Link生成:
    • UnityEditor.Build.Pipeline.Utilities.LinkXmlGenerator.CreateDefault()
  • SBP中包含的Type
    • WriteResult中包含的Type
      •  linker.AddTypes(resultValue.includedTypes);
      •  linker.AddSerializedClass(writeResult.Value.includedSerializeReferenceFQN);

  • Addressable中新增的Type

    • 程序集添加:
      •  linker.AddAssemblies(new[] { typeof(Addressables).Assembly, typeof(UnityEngine.ResourceManagement.ResourceManager).Assembly });
    • Type添加
      • m_Linker.AddTypes(runtimeData.CertificateHandlerType);
      • 各种Provider的Type,包括ResourceProvider、InstanceProvider、SceneProvider、InitializationDataProvider、自定义的Provider

至此,SBP的打包介绍完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值