您当前的位置: 首页 >  unity

十幺卜入

暂无认证

  • 5浏览

    0关注

    119博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity3d 基于xlua热更新实现系列三:生成AB包导出并实现AB包动态加载(资源半热更改)(含源码)

十幺卜入 发布时间:2022-03-24 17:36:29 ,浏览量:5

前言

之前一直在学习xlua的热更新,不过看了将近一个月的,略知一二了,但仿佛未形成体系,而且看再多,也不如动手实现一下。 遂打算实现一个完整体系热更新的demo,从编码、打包、服务器、下载、热更新等过形成整体的认知。并打算将整个过程进行记录,并分享给大家。 不过这只是个demo,仅以登录界面和场景作为热更新处理,且肯定不完美,有些地方实现方法不适合的地方也欢迎大家指出交流,该demo仅供参考,谨慎用于商业项目。 同时会将遇到的坑分享出来。

上两篇,我们实现了“登录功能熟悉lua重写C#(https://blog.csdn.net/qq_33789001/article/details/123580137)”和“Xlua脚本动态加载(半热更新)(https://blog.csdn.net/qq_33789001/article/details/123637629)”,实现了逻辑脚本可以动态更改,本篇文章实现资源的动态加载,通过AB包的形式实现该功能。

资源处理过程

这里就需要提前计划好包体内容和资源内容,特别需要动态使用的资源(音效、图片等)需要提前设置好ab包。

资源的整理

这里整理了节点的结构,将UI节点和场景节点分别放一个根节点。如图: 在这里插入图片描述

并将他们导出为预设(LoginPanel和LoginScene)。

AB包设置

我们根据上面两个预设,分别设置了ab包的名称: 在这里插入图片描述

包名会自动为全小写。

导出AB包

AB的导出,在我网上查阅很多是使用自己编写的导出包脚本,这里我们就使用插件AssetBundlesBrowser,下载地址,自行加载解压放到Editor目录。

通过Window > AssetBundles Browser打开导包工具的界面:

在这里插入图片描述

在Configure页面可以看到我们设置的ab包: 在这里插入图片描述

其中关联的资源会自动关联在内。

在Build页面选择好平台并设置导出路径,点击Build就可以生产ab包。 在这里插入图片描述

编写代码

加载ab包之前要加载主包(ABPacks),因为主包包含了各AB包的关联关系,先加载关联的资源AB包,再进行加载AB包。

加载AB包
    private void LoadAB(string abName) {
        if (mainAB == null)
        {
            mainAB = AssetBundle.LoadFromFile(Global.getABPath(mainABName));
            mainFest = mainAB.LoadAsset("AssetBundleManifest");
        }
        AssetBundle ab = null;
        string[] dpds = mainFest.GetAllDependencies(abName);
        for (int i = 0; i             
关注
打赏
1663314737
查看更多评论
0.0723s