using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class LoadAssetBundle : MonoBehaviour {
string sceneABName = "main.unity3d";
string assetPath;
/// <summary>
/// ab包的相对路径
/// </summary>
//string assetBundleName = "test.assetbundle";
string assetBundleName = "test.assetbundle";
/// <summary>
/// 需要加载的ab包里面的预设名字
/// </summary>
string loadPrefabName = "Cube";
private AssetBundleCreateRequest _request;
/// <summary>
/// 是否加载完成
/// </summary>
bool isDone = false;
/// <summary>
/// 加载ab资源
/// </summary>
/// <param name="abFullPath">ab包的绝对路径</param>
/// <param name="completeCallBack">加载完成回调</param>
public void LoadAbAssetAsync(string abFullPath,Action<AsyncOperation>completeCallBack)
{
_request = AssetBundle.LoadFromFileAsync(abFullPath);
if (_request == null)
{
Debug.Log("AssetBundleCreateRequest is null ");
return;
}
if (_request != null) _request.completed += completeCallBack;
}
private void Update()
{
if(!isDone&& _request!=null)
{
Debug.Log(_request.progress);
}
}
private void Request_completed(AsyncOperation obj)
{
AssetBundle asset = _request.assetBundle;
Instantiate(asset.LoadAsset(loadPrefabName));
Debug.Log("Request_completed");
isDone = true;
_request = null;
asset.Unload(false);
asset = null;
}
private void Start()
{
assetPath = Application.dataPath + "/../MyAssetBundles/";
//加载普通ab资源
//LoadAbAssetAsync(assetPath + assetBundleName, Request_completed);
//加载ab场景
LoadAbAssetAsync(assetPath + sceneABName, (async) =>
{
SceneManager.LoadScene("Main");
});
}
}