之前一直在学习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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?