Unity AB包资源加载管理器

         我们可以创建一个管理器去对AB包进行资源的管理,好处是可以让外部更方便的进行资源的加载。

        上次我们提到了AB包是不能重复加载的,重复加载的话会报错,因此我们应该把加载过的AB包通过字典的形式保存起来。

         我们可以将一些可能会变化的值——比如路径,平台设定为属性:

        其次我们回顾一下加载一个资源包的顺序,先是加载AB包的主包,然后获取我们需要的AB包对应依赖包的相关信息,如果包已经加载过,则不重复加载,然后再加载我们需要的AB包,最后返回所需要的资源,最后可以通过实例化显示在场景之中。

         也可以判断加载的资源是否是GameObject从而优化返回的数据:

        之前讲过有三种获取资源的方式:名字,Type和泛型,因此我们在做资源管理器的时候,可以重写这个方法,将相同的前置步骤(加载主包、依赖包)合并到一个方法中去,然后修改加载方式为type类型即可,泛型的同步加载也是一样的。

         然后外部就可以调用资源管理器中的方法来实现资源的加载了。

         然后是单个包的卸载,这边和之前卸载不同的地方就是存储已加载包的字典里也要删除对应的包名。

         卸载所有包,同时将所有数据设置为空,包括字典、主包和配置文件。


         讲完了同步加载,讲讲异步加载,这里的异步加载只讲从AB包中加载资源应该如何异步,异步加载AB包的话放在下一个博客里,异步加载的话我们不能立刻获得返回值,所以我们可以用委托。

        然后我们可以在外部调用,注意此时传过来的是Object类型,因此需要强转。

        因此在重写泛型的方法时,可以直接将委托类型定义为泛型,然后在外部调用时就可以直接调用了。

 

猜你喜欢

转载自blog.csdn.net/weixin_45081191/article/details/129091300