/// <summary> /// 取消加载 /// 如果正在加载中 加载成功之后会卸载,同时回调也不会触发 /// </summary> /// <param name="requestId"></param> /// <returns></returns> public static void CancelLoadAssetAsync(int requestId) { LoadAssetInfo loadAssetInfo = GetLoadAssetInfo(requestId); if (loadAssetInfo == null) { return; } // 等待加载状态中 直接回收(如果不回收将会先加载在卸载) if (loadAssetInfo.step == LoadAssetStep.LoadWait) { RecoveryLoadAssetInfo(loadAssetInfo); } else { PendingLoadAssetInfo pendingLoadAssetInfo = _pendingLoadAssetInfoList[loadAssetInfo.bundleName]; // 资源还未加载 因为在加载依赖的bundle if (pendingLoadAssetInfo != null) { // 取消依赖加载bundle RequestLoadBundle.CancelLoadBundleAsync(pendingLoadAssetInfo.reqeustId); RecoveryPendingLoadAssetInfo(pendingLoadAssetInfo); // 这时资源还未加载 直接回收 RecoveryLoadAssetInfo(loadAssetInfo); } } }
// Update is called once per frame void Update() { // 检测 加载bundle状态 等待加载-->加载(加载依赖bundle和自己)-->完成回调 RequestLoadBundle.Update(); // 检测 加载asset状态 等待加载-->加载依赖bundle-->加载自己-->完成回调 RequestLoadAsset.Update(); // 检测 asset引用 引用计数为零卸载asset ReferenceObject.Update(); // 检测 bundle引用 同上 ReferenceBundle.Update(); }
public static void CancelLoadBundleAsync(int requestId) { RequestLoadBundle.CancelLoadBundleAsync(requestId); }
/// <summary> /// 异步加载bundle /// </summary> /// <param name="bundleName">bundle名字</param> /// <param name="onCreateAssetBundle">加载成功后的回调</param> /// <returns>请求Id</returns> public static int CreateAssetBundleAsync(string bundleName, RequestLoadBundle.OnCreateAssetBundle onCreateAssetBundle) { return(RequestLoadBundle.CreateAssetBundleAsync(0, bundleName, onCreateAssetBundle)); }