Ejemplo n.º 1
0
 protected override void AddAssetSystems()
 {
     if (AssetBundleConfig.IsSimulator())
     {
         foreach (var systype in AssetBundleConfig.SimulatorLoadSystems)
         {
             IAssetBundleSystem sys = System.Activator.CreateInstance(systype) as IAssetBundleSystem;
             if (sys != null)
             {
                 Systems.Add(sys);
             }
         }
     }
     else
     {
         foreach (var systype in AssetBundleConfig.LoadSystems)
         {
             IAssetBundleSystem sys = System.Activator.CreateInstance(systype) as IAssetBundleSystem;
             if (sys != null)
             {
                 Systems.Add(sys);
             }
         }
     }
 }
Ejemplo n.º 2
0
        public bool IsDone(ref AssetBundleContext context, out GameAssetBundle assetBundle)
        {
            if (context.Cache.GetAssetBundle(AssetBundleName, out assetBundle))
            {
                //异步请求还未完成
                if (assetBundle.LoadRequest != null || assetBundle.LoadAssetRequest != null ||
                    assetBundle.SceneRequest != null || assetBundle.UnloadSceneRequest != null)
                {
                    return(false);
                }

                if (AssetBundleConfig.IsSimulator())
                {
                    return(true);
                }

                ///被预加载pin住的
                if (IsPreLoad() && PinTime > 0)
                {
                    if (FinishTime > CreateTime)
                    {
                        return(Time.realtimeSinceStartup - FinishTime > PinTime);
                    }
                    return(false);
                }
                //正在下载的
                if (AssetBundleFunction.InDowloading(ref context, ref this))
                {
                    return(false);
                }
                //加载异常
                if (AssetBundleConfig.SafeMode && assetBundle.IsException())
                {
                    return(true);
                }
                else if (assetBundle.AssetStatus.HasEnum(AssetBundleStatus.InMemory))  //加载正常
                {
                    int finish;
                    int total;
                    return(IsSubAllDone(ref context, out finish, out total));
                }
                //else if(assetBundle.AssetStatus == AssetBundleStatus.None)//啥事也没干的task
                //{
                //    return true;
                //}
            }
            else
            {
                return(true);
            }
            return(false);
        }