/// <summary>
/// 从文件进行异步加载
/// </summary>
/// <param name="abFullPath">ab包的绝对路径</param>
/// <param name="finishCallBack">完成加载回调,返回加载的AssetBundle</param>
/// <param name="updateCallBack">加载过程中的更新回调,返回加载进度</param>
/// <returns></returns>
IEnumerator LoadABFileAsync(string abFullPath,Action<AssetBundle> finishCallBack, Action<float> updateCallBack=null)
{
AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(abFullPath);
while (!request.isDone)
{
if(updateCallBack != null)
{
updateCallBack(request.progress);
}
yield return null;
}
yield return request;
if(finishCallBack!=null)
finishCallBack(request.assetBundle);
}
private void Start()
{
assetPath = Application.dataPath + "/../MyAssetBundles/";
StartCoroutine(LoadABFileAsync(assetPath + assetBundleName, OnFinish, OnUpdate));
}
private void OnUpdate(float obj)
{
Debug.Log(obj);
}
private void OnFinish(AssetBundle obj)
{
Instantiate(obj.LoadAsset(loadPrefabName));
obj.Unload(false);
}