/// <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);
            }
        }
    }
示例#2
0
 // Update is called once per frame
 void Update()
 {
     // 检测 加载bundle状态  等待加载-->加载(加载依赖bundle和自己)-->完成回调
     RequestLoadBundle.Update();
     // 检测 加载asset状态   等待加载-->加载依赖bundle-->加载自己-->完成回调
     RequestLoadAsset.Update();
     // 检测 asset引用       引用计数为零卸载asset
     ReferenceObject.Update();
     // 检测 bundle引用      同上
     ReferenceBundle.Update();
 }
示例#3
0
 public static void CancelLoadBundleAsync(int requestId)
 {
     RequestLoadBundle.CancelLoadBundleAsync(requestId);
 }
示例#4
0
 /// <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));
 }