使用 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;
...
}