Unity Xlua热更新框架(二):构建AssetBundle

2. Bundle构建工具

框架开发流程,,,热更新最重要的是Bundle,所以Bundle处理放在最前面,,后面二三阶段是C#与Lua的交互

  • 第一阶段:Bundle处理
    • 构建
    • 加载
    • 更新
  • 第二阶段:C#调用Lua
    • Lua脚本的加载与内存的管理
    • Lua脚本的逻辑绑定与执行(Lua是独立的脚本,需要绑定到实体对象上,每一个功能单独写一个Lua脚本,例如一个UI,有对应UI的操作,UI的逻辑就全部写到Lua脚本里,把Lua脚本绑定到UI上)
  • 第三阶段:向Lua提供接口(逻辑在Lua开发,有的东西不适合在Lua写,写进框架,后期提供接口)
  • 第四阶段:完善和优化

环境安装

开发工具:Unity、VS、Git、TortoiseGit
导入Xlua:官方下载地址:https://github.com/Tencent/xLua
image.png
XLua的目录就是Unity的目录,只需要把Assets下面的Plugins和Xlua文件夹复制进Unity项目中即可
构建Bundle需要做什么?

  • 查找BuildResources下的资源文件(根据策略模式打成Bundle包)
  • 使用Unity提供的BuildPipeline进行构建(直接使用这个就可以打Bundle包)

meta不需要打入bundle包
Bundle Build策略?

  • 按文件夹打包image.png,按照文件夹细分功能,根据最后一层构建Bundle
    • 优势:bundle数量少,小包模式(第一次安装包小,没有热更资源,CDN下载热更文件):首次下载快
    • 劣势:后期更新时,更新补丁大(例如一个图片bundle 5M,实际里面就一个小图片修改了,导致整个热更补丁大)
  • 按文件打包image.png,例如把Image变成预设文件,每一个文件都要构建Bundle
    • 优势:更新补丁很小,每一个文件都是一个Bundle包
    • 劣势:小包模式:首次下载稍慢(也不会慢特别多,,两者区别不大,这个更简单)

打Bundle的工具是编辑器的代码,放到Scripts-Editor中,其他脚本放到Framework中image.png
创建BuildTool脚本image.png,BuildTool必须继承Editor,而非Mono,因为不用打进包里

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;

/// <summary>
/// 构建工具类:
/// 创建了三种构建方法windows android ios。
/// Build方法:从所有路径查找文件,排除meta后,把每个文件名作为被打包资源名和bundle名(当然一个bundle可以打包多个文件),GetDependence获取所有文件的依赖文件,
/// 把这些信息写入到bundleInfos,BuildPipeline.BuildAssetBundles一下,就建好了ab包,然后把所有包的信息写入filelist中
/// </summary>
public class BuildTool : Editor
{
   
   
    //如何使用Build呢,直接添加工具栏
    [MenuItem("Tools/Build Windows Bundle")]
    static void BundleWindowsBuild()
    {
   
   
        Build(BuildTarget.StandaloneWindows);
    }

    //如何使用Build呢,直接添加工具栏
    [MenuItem("Tools/Build Android Bundle")]
    static void BundleAndroidBuild()
    {
   
   
        Build(BuildTarget.Android);
    }

    //如何使用Build呢,直接添加工具栏
    [MenuItem("Tools/Build IOS Bundle")]
    static void BundleIOSBuild()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值