Unity Asset BuildPipeline.PushAssetDependencies 函数

BuildPipeline.PushAssetDependencies函数与BuildPipeline.PopAssetDependencies函数应为一一对应关系。

体现在使用BuildPipeline.BuildAssetBundle进行打包的操作中。

主要目的是可以让一些需要使用引用方式访问的Asset资源不需要被打到资源包中,可以尽量的减少资源的大小。

不过说实话使用起来有点蛋疼。


首先要使用这个操作,要求你在这次的打包过程中需要将所有资源进行一次打包操作,而无法使用原先已经打包过的资源(这个未经确认,个人目前感觉)

打包资源的顺序需要先打包基础包。

假设基础包对象为BaseObj引用对象。实例对象为MainObj引用对象。让MainObj打出来的包可以引用BaseObj打出的包的代码方式如下:


BuildAssetBundleOptions option =
                BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets;

BuildPipeline.PushAssetDependencies();

BuildPipeline.BuildAssetBundle(BaseObj, null, BaseObjPath, option);

BuildPipeline.BuildAssetBundle(MainObj, null, MainObjPath, option);

BuildPipeline.PopAssetDependencies();


参数部分不进行详细说明。

从使用方式看来,在Push函数开始的时候进行某一次资源引用信息记录,在Push操作之后的所有打包操作都将记录进某个信息集合,用于Pop操作前的打包资源引用关系计算。

因此BaseObj的打包必须先进行。而后进行MainObj的打包。

另外,BaseObj的打包必须在MainObj的打包操作之前。


在读取使用资源上,需要保证BaseObj资源先被载入(调用WWW.assetbundle.LoadAll())。假设BaseObj有在其他包被引入,引入其他包并不能使通过上述过程打包出的MainObj资源正常显示(即使是用同样过程不同时间打出来的包也一样,另外一方面,通过以上过程打出来的不同的包文件名和路径是可以随意更改的,并不影响引用)。

如你需要打包出的资源可以重复利用,需要在打包参数中添加BuildAssetBundleOptions.DeterministicAssetBundle项。这样不同时间打包出的资源就可以兼容使用。


Push操作和Pop操作的配对是可以进行嵌套的。嵌套的资源可共享嵌套层次更浅的资源,而无法共享嵌套层次更深的资源。如:

Push

Build Res A

Push

Push

Build Res B

Pop

Build Res C

Pop

Build Res D

Pop


以上的逻辑代码中,C资源是无法共享B的导出资源的。但是B,C资源都可以共享A的导出资源。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值