Unity学习心得之AssetBundles

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压缩,可加载指定资源,加载速度较快、压缩率也较好:

 

二.打包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;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值