Skip to content

使用 AssetBundle 进行资源按需加载

阐述如何在小游戏环境对AssetBundle进行打包、加载和内存优化。

注意:小游戏环境不支持assetbundle本地加载。

使用

该功能已经提供相应的打包工具,具体代码位置在 QGGameTools.AssetBundleBuild ,打包路径及打包参数可自行调整。

打包参数建议

BuildAssetBundleOptions.ChunkBasedCompression* 建议使用LZ4压缩方式,加载速度和包体大小更均衡。

c#
public static void AssetBundleBuild() 
        {
            string dst = Application.streamingAssetsPath + "/AssetBundles";
            if (!Directory.Exists(dst))
            {
                Directory.CreateDirectory(dst);
            }
            BuildPipeline.BuildAssetBundles(dst, BuildAssetBundleOptions.AppendHashToAssetBundleName | BuildAssetBundleOptions.ChunkBasedCompression | UnityEditor.BuildAssetBundleOptions.DisableWriteTypeTree | BuildAssetBundleOptions.None, BuildTarget.WebGL);
        }

资源加载方式

推荐使用 UnityWebRequestAssetBundle。

c#
UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle("http://xxxxx/AssetBundles");
        yield return request.SendWebRequest();
        if (request.result != UnityWebRequest.Result.Success)
        {
        }
        else
        {
            AssetBundle ab = (request.downloadHandler as DownloadHandlerAssetBundle).assetBundle;
            ...
        }