Unity学习心得之AssetBundles

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/asdfghj253/article/details/84824282

AssetBundles用于外部加载资源

主要有2种:

1.本地路径加载资源包

2.获取服务器的资源包加载

一、创建unity的官方提供的assetbundle打包插件

using UnityEditor;//需放在Editor文件夹目录下
using System.IO;

public class CreateAssetBundles
{
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        string assetBundleDirectory = "Assets/AssetBundles";
        if(!Directory.Exists(assetBundleDirectory))
        {
        //创建assetBundleDirectory路径
        Directory.CreateDirectory(assetBundleDirectory);
        }
      //构建assetbundle
      //BuildAssetBundleOptions.None是压缩模式
      BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
    }
}

注:BuildAssetBundleOptions有很多压缩模式,

BuildAssetBundleOptions.None:默认压缩

BuildAssetBundleOptions.UncompressedAssetBundle: 不压缩,包大,加载快

BuildAssetBundleOptions.ChunkBasedCompression:使用L4Z压缩,可加载指定资源,加载速度较快、压缩率也较好:

扫描二维码关注公众号,回复: 4512903 查看本文章

二.打包assetbundle

1.先设置包名

2.再生成包

Asset->AssetBundles

其中assetbundles是总包,负责总体联系

share、test是我们单独打出来的包

三、assetbundle的加载

1.本地

//加载assetbundle

//获取包中的物体-Wall是我打包在里面的物体名字

//然后挂在某个物体上就能生成了

主要:AssetBundle.LoadFromFile()

2.服务器

using UnityEngine;
using System.Collections;

public class LoadFromCacheOrDownloadExample : MonoBehaviour
{
    IEnumerator Start ()
    {
            while (!Caching.ready)
                    yield return null;

        var www = WWW.LoadFromCacheOrDownload("http://myserver.com/myassetBundle", 5);
        yield return www;
        if(!string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.error);
            yield return;
        }
        var myLoadedAssetBundle = www.assetBundle;

        var asset = myLoadedAssetBundle.mainAsset;
    }
}

猜你喜欢

转载自blog.csdn.net/asdfghj253/article/details/84824282