ue3d总结Unity下载AssetBundle的所有方法

总结Unity下载AssetBundle的所有方法

分类:

Unity中下载和保存AssetBundle的方法有很多种,有时真不知道该用哪一种。因此,本文总结了用Unity下载AssetBundle的所有方法。

使用DownloadHandlerBuffer

第一种方法是使用UnityWebRequest.Get()来处理通信、处理下载。使用默认的DownloadHandlerBuffer,可通过这里了解DownloadHandlerBuffer。

这个方法在下载完成时可以得到AssetBundle作为字节阵列。

using (var request = UnityWebRequest.Get(url)) {

    yield return request.SendWebRequest();

    if (request.isHttpError || request.isNetworkError) {
        yield break;
    }
    
    var data = request.downloadHandler.data;
    // 因为能得到字节序列作为assetbundle研究则assetbundle.loadfrommemory
    var assetBundle = AssetBundle.LoadFromMemory(data);
}

磁盘写入使用File类或FileStream,虽然是最通用的下载方法,但是和以后的方法相比没有优化。

使用DownloadHandlerFile

接下来,将DownloadHandler换成专门保存文件的方式,使用这个处理程序的话连刻录到磁盘都能做。

另外,因为接收到数据的顺序每次进行写入对存储器也温柔。

using (var request = UnityWebRequest.Get(url)) {
    // 把DownloadHandler换成文件用的
    request.downloadHandler = new DownloadHandlerFile(savePath);
    yield return request.SendWebRequest();

    if (request.isHttpError || request.isNetworkError) {
        yield break;
    }
    
    // 因为已经写入到磁盘上了,所以可以通过AssetBundle.LoadFromFile获取
    var assetBundle = AssetBundle.LoadFromFile(savePath);
}

因为无法使用Unity为我们准备的缓存机制,所以我们需要自制缓存,加密等Unity不支持的实现可以自由的优点。

可通过这里了解DownloadHandlerFile。

使用DownloadHandlerAssetBundle

UnityWebRequest.Get() 取而代之的是UnityWebRequestAssetBundle.GetAssetBundle代替使用方法也有。

使用这个的话,AssetBundle会被保存到Unity管理的保存处。另外,如果保存的是AssetBundle,就不用下载,直接从那里获取。

using (var request = UnityWebRequestAssetBundle.GetAssetBundle(url)) {

    yield return request.SendWebRequest();

    if (request.isHttpError || request.isNetworkError) {
        yield break;
    }

    // 将处理程序强制转换为 DownloadHandlerAssetBundle
    var handler = request.downloadHandler as DownloadHandlerAssetBundle;
    var assetBundle = handler.assetBundle;
}

UnityWebRequestAssetBundle的简单缓存机制,本文不做详细介绍,有时间下次单独介绍它。

使用自己的DownloadHandler

UnityWebRequeset的DownloadHandler可以自定义,也可以使用自制的DownloadHandler,就像官方的介绍的一样。

这里了解它。

以上是关于下载AssetBundle方法的全部内容,如果你有任何反馈,请随时在本页面下方留言。

相关信息

  • 类型:知识
  • 字数:445
  • 字符:2556
  • 适用软件:Unity
  • 说明:无
  • 编号:169134

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!