AssetBundle打包和加载_依赖加载(二)

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 加载ab包的流程是:
///1.加载依赖配置文件manifest;
///2.加载依赖项
///3.加载目标预设模型
///4.克隆预设
///5.卸载依赖项和预设的ab和依赖配置文件,即:bundle.Unload(false)
/// </summary>

public class LoadAssetBundle : MonoBehaviour {


	string assetPath;

	/// <summary>
	/// 依赖配置
	/// </summary>
	AssetBundleManifest m_manifest;

	/// <summary>
	/// ab包的绝对路径
	/// </summary>
	string assetBundleName = "test.assetbundle"; 

	/// <summary>
	/// 需要加载的ab包里面的预设名字
	/// </summary>
	string loadPrefabName = "Cube";
	// Use this for initialization
	void Start () {
		assetPath = Application.dataPath + "/../MyAssetBundles/";


		//1.先加载依赖文件配置
		AssetBundle manifestBundle = null;
		m_manifest = LoadAsset<AssetBundleManifest>( "MyAssetBundles", "AssetBundleManifest",ref manifestBundle);

		Debug.Log("加载依赖文件配置");
		//2加载依赖项开始
		string[] arrDps = m_manifest.GetAllDependencies(assetBundleName);

		AssetBundle[] arrDpsBundle = new AssetBundle[arrDps.Length];

		for(int i=0;i<arrDps.Length;i++)
		{
			AssetBundle desBundle = null;
			LoadAsset<Object>(arrDps[i], arrDps[i], ref desBundle);
			Debug.Log("2.加载依赖项=" + arrDps[i]);
			arrDpsBundle[i] = desBundle;

		}

		//3加载和克隆预设

		AssetBundle loadPrefabBundle = null;
		GameObject obj = LoadAsset<GameObject>(assetBundleName, loadPrefabName, ref loadPrefabBundle);
		Instantiate(obj);

		//4卸载资源
		for(int i=0;i<arrDpsBundle.Length;i++)
		{
			arrDpsBundle[i].Unload(false);
		}
		loadPrefabBundle.Unload(false);
		manifestBundle.Unload(false);

		
	}
	
	/// <summary>
	/// 加载资源
	/// </summary>
	/// <typeparam name="T">包名</typeparam>
	/// <param name="assetName"></param>
	/// <param name="sourceName">资源名称</param>
	/// <returns></returns>
	public T LoadAsset<T>(string assetName,string sourceName,ref AssetBundle bundle) where T : UnityEngine.Object
	{
		bundle = AssetBundle.LoadFromFile(string.Format("{0}{1}", assetPath, assetName));
		return bundle.LoadAsset(sourceName) as T;
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值