美文网首页
Unity WebGL AssetBundle

Unity WebGL AssetBundle

作者: Lif68 | 来源:发表于2020-12-13 17:53 被阅读0次

    这里用了PMXiang写的编辑器扩展脚本,该脚本需要放在Unity-Assets-Editor文件夹下
    核心的命令是

    //需要打包的资源
     AssetBundleBuild[] buildMap = new AssetBundleBuild[1];
    //资源包的名称(自定义assetBundleName后缀)
    buildMap[0].assetBundleName = fileList[0].Split('/')[fileList[0].Split('/').Length - 2].ToLower()+".pak";
    //资源包下的资源名称,一个资源包可以包含多个资源,资源由asset开始的路径组成且包含自身后缀名
    buildMap[0].assetNames = fileList.ToArray();
    BuildPipeline.BuildAssetBundles(_assetBundleOutputPath,buildMap,BuildAssetBundleOptions.ChunkBasedCompression, EditorUserBuildSettings.activeBuildTarget);
    

    注意,BuildAssetBundleOptions.ChunkBasedCompression是在打包unityWebGL的ab包能够使用的标识。实际上这个参数是ab包压缩参数,意思是使用LZ4格式进行压缩,这种压缩模式解压快,适合webgl使用。
    unity官网文档对这部分参数的介绍
    关于压缩模式:
    (1)LZMA:默认压缩格式,压缩比大,省空间,使用前需要解压整个压缩包;
    (2)LZ4:5.3版本新增, 40%–60% 的压缩率,开启BuildAssetBundleOptions.ChunkBasedCompression打包参数即可。LZ4算法是“基于块”的,因此当对象从一个LZ4压缩包加载时,仅用于该对象的相应块会被解压,不需要解压整个包。所以LZ4和不压缩资源一样,都可以不解压,而直接读取包中的资源的。
    (3)UnCompress:不压缩,访问最快,费空间。
    关于ab包加载方式:
    过去会使用WWW作为加载方式,现在基本使用UnityWebRequest,

    UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(path);
    

    这里的path是

    Path.Combine(Application.streamingAssetsPath, bundleName)
    

    出来的,bundleName是打出来的ab包的名字,要加后缀名

    相关文章

      网友评论

          本文标题:Unity WebGL AssetBundle

          本文链接:https://www.haomeiwen.com/subject/gpgzwktx.html