AssetBundle

设置下面的AssetBundle,打包的文件


打包:

using UnityEditor;
using System.IO;

public class CreateAssetBundles
{
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        string dir = "AssetBundles";
        if(Directory.Exists(dir)==false)
        {
            Directory.CreateDirectory(dir);
        }
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
    }
	
}

加载本地的打包资源:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class LoadFromFileExample : MonoBehaviour {

	// Use this for initialization
	void Start ()
    {
       AssetBundle ab= AssetBundle.LoadFromFile("AssetBundles/scene/capsulewall.unity3d");
        GameObject go = ab.LoadAsset<GameObject>("Capsulewall");
        Instantiate(go);
        //Object[] objs = ab.LoadAllAssets();    //得到所有的模型
        //foreach(Object o in objs)
        //{
        //    Instantiate(o);
        //}

    }
	
	// Update is called once per frame
	void Update () {
		
	}
}


依赖打包:
把共有的资源也打包,AssetBundle为Share,系统会自动分配
加载的时候先加载依赖包,依赖包是共有的资源


BuildAssetBundleOptions:


加载:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.Networking;

public class LoadFromFileExample : MonoBehaviour {

	// Use this for initialization
	IEnumerator Start ()
    {
        string path = "AssetBundles/cubewall.unity3d";
        // AssetBundle ab2 = AssetBundle.LoadFromFile("AssetBundles/share.unity3d");
        //AssetBundle ab= AssetBundle.LoadFromFile("AssetBundles/cubewall.unity3d");
        // GameObject go = ab.LoadAsset<GameObject>("wall");
        // Instantiate(go);
        //Object[] objs = ab.LoadAllAssets();    //得到所有的模型
        //foreach(Object o in objs)
        //{
        //    Instantiate(o);
        //}


        //1.第一种加载AB的方式LoadFromMemoryAsync(从内存中加载)
        //AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path));
        //yield return request;
        //AssetBundle ab= request.assetBundle;
        //AssetBundle ab= AssetBundle.LoadFromMemory(File.ReadAllBytes(path));
        //AssetBundle ab2 = AssetBundle.LoadFromMemory(File.ReadAllBytes("AssetBundles/share.unity3d"));

        //2.第二种加载AB的方式LoadFromFileAsync
        //AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(path);
        //yield return request;
        //AssetBundle ab = request.assetBundle;

        //3.第三种加载AB的方式 WWW
        //while(Caching.ready==false)
        //{
        //    yield return null;
        //}
        file:// 或file:///都可以
        WWW www = WWW.LoadFromCacheOrDownload(@"file:///E:\UnityProject\AssetBundleProject\AssetBundles\cubewall.unity3d", 1);
        //WWW www = WWW.LoadFromCacheOrDownload(@"http://localhost/AssetBundles/cubewall.unity3d",1);
        //yield return www; 
        //if(string.IsNullOrEmpty(www.error)==false)
        //{
        //    Debug.Log(www.error);
        //    yield break;
        //}
        //AssetBundle ab = www.assetBundle;

        //4.第四种加载方式UnityWebRequest
        //string uri = @"file:///E:\UnityProject\AssetBundleProject\AssetBundles\cubewall.unity3d";
        string uri = @"http://localhost/AssetBundles/cubewall.unity3d";
        UnityWebRequest request = UnityWebRequest.GetAssetBundle(uri);
        yield return request.Send();
        //string uri2 = @"http://localhost/AssetBundles/share.unity3d";
        //UnityWebRequest request2  = UnityWebRequest.GetAssetBundle(uri2);
        //yield return request2.Send();
        //DownloadHandlerAssetBundle.GetContent(request2);
        AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
        //AssetBundle ab = (request.downloadHandler as DownloadHandlerAssetBundle).assetBundle;
        
        //使用里面的资源:(加载资源)
        GameObject go = ab.LoadAsset<GameObject>("wall");
        Instantiate(go);


        AssetBundle manifestAB = AssetBundle.LoadFromFile("AssetBundles/AssetBundles");
        AssetBundleManifest manifest = manifestAB.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
        string[] strs = manifest.GetAllDependencies("cubewall.unity3d");

        foreach(string name in strs)
        {
            Debug.Log(name);
            AssetBundle.LoadFromFile("AssetBundles/" + name);
           
        }
    }
	
	// Update is called once per frame
	void Update () {
		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值