/// <summary> /// check the queue and load assetbundle and asset /// </summary> static protected bool LoadingQueue() { if (inProgressBundleOperations.Count > 0) { return(false); //wait bundle load } LinkedListNode <BundleGroundQueue> fristNode = bundleGroundQueue.First; while (fristNode != null && maxLoading - loadingTasks.Count > 0) { BundleGroundQueue value = fristNode.Value; if (value.Count > 0) { var req = value.Dequeue(); #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat("LoadingQueue", "<color=#05AA01>0.1 LoadAssetBundle Request(url={0},assetname={1},dependencies.count={3})keyHashCode{2}, frameCount{4}</color>", req.url, req.assetName, req.keyHashCode, req.dependencies == null ? 0 : req.dependencies.Length, Time.frameCount); #endif LoadAssetBundle(req); } else { fristNode = fristNode.Next; bundleGroundQueue.Remove(value); } var ts = System.DateTime.Now - frameBegin; if (ts.TotalMilliseconds > BundleLoadBreakMilliSeconds) { return(true); } } return(false); }
private void FinishDownload() { if (m_webrequest == null) { error = string.Format("the webrequest is null CRequest({0},{1})", cRequest.key, cRequest.assetName); return; } error = m_webrequest.error; if (!string.IsNullOrEmpty(error)) { Debug.LogError(error); } else if ((assetBundle = DownloadHandlerAssetBundle.GetContent(m_webrequest)) == null) { error = string.Format("the asset bundle({0}) is not exist. CRequest({1})", cRequest.key, cRequest.assetName); } #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, "<color=#15A0A1>1.5 AssetBundleDownloadFromWebOperation is done Request(url={0},assetname={1},dependencies.count={3})keyHashCode{2},asyn={4},frameCount{5}</color>", cRequest.url, cRequest.assetName, cRequest.keyHashCode, cRequest.dependencies == null ? 0 : cRequest.dependencies.Length, cRequest.async, Time.frameCount); #endif m_webrequest.Dispose(); m_webrequest = null; m_asyncOperation = null; }
/// <summary> /// append request to assetCallBackList /// </summary> /// <param name="AssetBundleLoadAssetOperation">operation.</param> static protected bool AddAssetBundleLoadAssetOperationToCallBackList(AssetBundleLoadAssetOperation operation) { bool isLoading = false; var req = operation.cRequest; string key = req.udAssetKey; List <CRequest> list = null; if (assetCallBackList.TryGetValue(key, out list)) //回调列表 { list.Add(req); isLoading = true; operation.ReleaseToPool(); } else { list = ListPool <CRequest> .Get(); assetCallBackList.Add(key, list); list.Add(req); } #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(req.key, "<color=#ffff00>2.0.0 AddAssetBundleLoadAssetOperationToCallBackList Request(url={0},assetname={1},keyHashCode{2},asyn={4}) list.count={3}, frameCount{5}</color>", req.url, req.assetName, req.keyHashCode, list.Count, req.async, Time.frameCount); #endif return(isLoading); }
internal static bool CheckRemove(int keyhashcode) { if (removeDic.ContainsKey(keyhashcode)) { removeDic.Remove(keyhashcode); CacheData cache = CacheManager.TryGetCache(keyhashcode); AddDependenciesReferCount(cache, true); #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cache.assetBundleKey, "CheckRemove AssetBundle(key={0},hash={1}),frameCount{5}</color>", cache.assetBundleKey, cache.assetHashCode, Time.frameCount); #endif // #if HUGULA_CACHE_DEBUG // HugulaDebug.FilterLogFormat(cache.assetBundleKey, "<color=#ffff00> -1 remove abName({0}) for ABDelayUnloadManager ,ref count = {1},removed={2} </color>", cache.assetBundleKey, cache.count, re); // #endif // if (cache != null && cache.dependencies != null) // { // int keyhash = 0; // int[] alldep = cache.dependencies; // #if HUGULA_CACHE_DEBUG // HugulaDebug.FilterLogFormat(cache.assetBundleKey, "<color=#ffff00> -1 remove abName({0})'s allDependencies from ABDelayUnloadManager , Dependencies.count = {1} </color>", cache.assetBundleKey, alldep == null ? 0 : alldep.Length); // #endif // for (int i = 0; i < alldep.Length; i++) // { // keyhash = alldep[i]; // CountMananger.WillAdd(keyhash); //引用数量加1 // CheckRemove(keyhash); // } // } return(true); } else { return(false); } }
/// <summary> /// LoadAsset /// </summary> /// <param name="req"></param> /// <param name="coroutine"></param> /// <returns></returns> static public AssetBundleLoadAssetOperation LoadAsset(CRequest req, bool coroutine = false) { AssetBundleLoadAssetOperation op = null; if (coroutine) { #if UNITY_EDITOR if (ManifestManager.SimulateAssetBundleInEditor) { op = new AssetBundleLoadAssetOperationSimulation(); } else { op = new AssetBundleLoadAssetOperationFull(); } #else op = new AssetBundleLoadAssetOperationFull(); #endif op.SetRequest(req); req.assetOperation = op; op.Update(); } var groupQueue = BundleGroundQueue.Get(); groupQueue.priority = req.priority; groupQueue.Enqueue(req); #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(req.key, "<color=#15A0A1>0.0.1 before LoadGroupAsset, ResourcesLoader.LoadAsset(Request(url={0},assetname={1},keyhash={2}),coroutine={3}),assetOperation={4},frameCount={5}</color>", req.url, req.assetName, req.keyHashCode, coroutine, op, Time.frameCount); #endif LoadGroupAsset(groupQueue); return(op); }
static public void LoadAsset(CRequest req) { string relativeUrl = ManifestManager.RemapVariantName(req.vUrl); req.vUrl = relativeUrl; //check asset cache if (LoadAssetFromCache(req)) { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(req.key, "<color=#15A0A1>2.0.0 LoadAssetFromCache Request(url={0},assetname={1},dependencies.count={3})keyHashCode{2}, frameCount{4}</color>", req.url, req.assetName, req.keyHashCode, req.dependencies == null ? 0 : req.dependencies.Length, Time.frameCount); #endif DispatchReqAssetOperation(req, false); return; } //check loading count if (maxLoading - loadingTasks.Count <= 0) { waitRequest.Enqueue(req);//等待 } else { LoadAssetBundle(req);//real load } }
/// <summary> /// real load assetbundle /// </summary> /// <param name="req"></param> /// <returns></returns> static protected AssetBundleDownloadOperation LoadAssetBundleInternal(CRequest req) { AssetBundleDownloadOperation abDownloadOp = null; if (!downloadingBundles.TryGetValue(req.key, out abDownloadOp)) { req.url = GetAssetBundleDownloadingURL(req.vUrl); // set full url if (req.url.StartsWith(Common.HTTP_STRING)) //load assetbunlde { abDownloadOp = AssetBundleDownloadFromWebOperation.Get(); } else { abDownloadOp = AssetBundleDownloadFromDiskOperation.Get(); } abDownloadOp.SetRequest(req); downloadingBundles.Add(req.key, abDownloadOp); CacheData cached = null; CacheManager.CreateOrGetCache(req.keyHashCode, out cached);//cache data inProgressBundleOperations.Add(abDownloadOp); abDownloadOp.BeginDownload(); #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(req.key, "<color=#10f010>1.2 LoadAssetBundleInternal Request(key={0},isShared={1},assetname={2},dependencies.count={4})keyHashCode{3}, frameCount{5}</color>", req.key, req.isShared, req.assetName, req.keyHashCode, req.dependencies == null ? 0 : req.dependencies.Length, Time.frameCount); #endif } else if (req.isShared) { req.ReleaseToPool(); } return(abDownloadOp); }
internal static void AddDependenciesReferCount(CacheData cache) { if (cache != null) { int keyhash = 0; int[] alldep = cache.dependencies; #if HUGULA_CACHE_DEBUG HugulaDebug.FilterLogFormat(cache.assetBundleKey, "<color=#ffff00> CheckRemove abName({0})'s allDependencies from ABDelayUnloadManager , Dependencies.count = {1} </color>", cache.assetBundleKey, alldep == null ? 0 : alldep.Length); #endif if (alldep != null) { CacheData pCache = null; for (int i = 0; i < alldep.Length; i++) { keyhash = alldep[i]; pCache = CacheManager.TryGetCache(keyhash); if (pCache != null) { pCache.count++; #if HUGULA_CACHE_DEBUG HugulaDebug.FilterLogFormat(pCache.assetBundleKey, " <color=#fcfcfc>check add (assetBundle={0},parent={1},hash={2},count={3}) frameCount={4}</color>", pCache.assetBundleKey, cache.assetBundleKey, keyhash, pCache.count, UnityEngine.Time.frameCount); #endif if (removeDic.ContainsKey(keyhash)) //如果在回收列表 { removeDic.Remove(keyhash); // if (pCache.count == 1) //相加后为1,在回收列表,需要对所有依赖项目引用+1 AddDependenciesReferCount(pCache); } } } //end for } // end if } // end cache }
void m_Done() { if (cRequest.error != null) { return; } object m_Data = null; bool isLoadAll = LoaderType.Typeof_ABAllAssets.Equals(cRequest.assetType); if (isLoadAll) { m_Data = m_Request.allAssets; } else { m_Data = m_Request.asset; } #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, " <color=#15A0A1> 1.2 LoadAssetOperation done Request(assetName={0}) data={1} key={2},frame={3} </color>", cRequest.assetName, m_Data, cRequest.key, Time.frameCount); #endif if (m_Data == null) { cRequest.error = string.Format("load asset({0}) from {1} error", m_Request, cRequest.url); Debug.LogError(cRequest.error); } else { cRequest.data = m_Data; m_Bundle.SetAsset(cRequest.udAssetKey, m_Data); } }
/// <summary> /// finish asset or http request /// </summary> /// <param name="operation"></param> static void ProcessFinishedOperation(ResourcesLoadOperation operation) { var req = operation.cRequest; bool isError = false; AssetBundleLoadAssetOperation assetLoad = operation as AssetBundleLoadAssetOperation; HttpLoadOperation httpLoad; if (assetLoad != null) { loadingTasks.Remove(req); isError = assetLoad.error != null; operation.ReleaseToPool(); //relase AssetBundleLoadAssetOperation SetCacheAsset(req); // set asset cache DispatchAssetBundleLoadAssetOperation(req, isError); //等两帧再CheckAllComplete allCompleteCheckCount = 0.5f; //CheckAllComplete();//check all complete } else if ((httpLoad = operation as HttpLoadOperation) != null) { isError = !string.IsNullOrEmpty(httpLoad.error); if (isError && UriGroup.CheckAndSetNextUriGroup(req)) // { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(req.key, "<color=#10f010>1.9 ProcessFinishedOperation re Loaded Request(url={0},assetname={1},dependencies.count={3},keyHashCode{2}),isError={4} frameCount{5}</color>", req.url, req.assetName, req.keyHashCode, req.dependencies == null ? 0 : req.dependencies.Length, isError, Time.frameCount); #endif // Debug.LogFormat(" re try {0};",req.url); inProgressOperations.Add(httpLoad); httpLoad.Reset(); httpLoad.SetRequest(req); httpLoad.BeginDownload(); //retry } else { operation.ReleaseToPool(); if (isError) { req.DispatchEnd(); } else { req.DispatchComplete(); } if (req.group != null) { req.group.Complete(req, isError); } req.ReleaseToPool(); } } }
public override void Reset() { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, "<color=#15A0A1>2.1 AssetBundleLoadAssetOperationFull.Reset Request(url={0},assetName={1}) ,m_Request={2},m_Data={3},error={4},frameCount={5}</color>", url, assetName, m_Request, m_Data, error, Time.frameCount); #endif base.Reset(); url = null; m_Request = null; isLoadAll = false; }
public override void ReleaseToPool() { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, "<color=#15A0A1>2.1 AssetBundleLoadAssetOperationFull.ReleaseToPool Request(url={0},assetName={1}) ,m_Request={2},m_Data={3},error={4},pool={5},frameCount={6}</color>", url, assetName, m_Request, m_Data, error, pool, Time.frameCount); #endif if (pool) { Release(this); } }
public void Unload() { if (assetBundle) { assetBundle.Unload(false); } isUnloaded = true; #if HUGULA_CACHE_DEBUG HugulaDebug.FilterLogFormat(assetBundleKey, "Unload CacheData({0},assetHashCode({1})),frame={2} ", assetBundleKey, assetHashCode, Time.frameCount); #endif }
private void _BeginDownload() { m_webrequest = UnityWebRequest.GetAssetBundle(this.cRequest.url); if (m_webrequest != null) { m_asyncOperation = m_webrequest.Send(); } #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, "<color=#15A0A1>1.4 AssetBundleDownloadFromWebOperation Request(url={0},assetname={1},dependencies.count={3})keyHashCode{2}, frameCount{4}</color>", cRequest.url, cRequest.assetName, cRequest.keyHashCode, cRequest.dependencies == null ? 0 : cRequest.dependencies.Length, Time.frameCount); #endif }
internal void SubtractReferCount() { var subre = CountMananger.Subtract(this.assetHashCode); #if HUGULA_CACHE_DEBUG HugulaDebug.FilterLogFormat(assetbundle, " SubtractReferCount: name({0}) abName({1}) assetHashCode({2}) referCount={3} ", GetPathName(this.transform), assetbundle, assetHashCode, subre); #endif if (subre == -1) { Debug.LogWarningFormat("SubtractReferCount: name({0}) abName({1}) assetHashCode({2},count={3}) refer delete error ", GetPathName(this.transform), assetbundle, assetHashCode, subre); } }
/// <summary> /// unload assetbundle and Dependencies false /// </summary> /// <param name="assetBundleName"></param> public static bool UnloadDependenciesCacheFalse(string assetBundleName) { int hash = LuaHelper.StringToHash(assetBundleName); if (!UnloadDependenciesCacheFalse(hash)) { #if UNITY_EDITOR || HUGULA_CACHE_DEBUG HugulaDebug.FilterLogWarningFormat(assetBundleName, "Unload Dependencies Cache False {0} fail is null or locked ", assetBundleName); #endif return(false); } return(true); }
internal static bool AddSourceCacheDataFromWWW(AssetBundle ab, CRequest req) { CacheData cacheData = null; CreateOrGetCache(req.keyHashCode, out cacheData); cacheData.SetCacheData(ab, req.key); //缓存 cacheData.dependencies = req.dependencies; cacheData.isDone = true; #if HUGULA_CACHE_DEBUG HugulaDebug.FilterLogFormat(req.key, " <color=#ffffff>LoadDone add (assetBundle={0},hash={1},count={2}) frameCount{3}</color>", cacheData.assetBundleKey, req.keyHashCode, cacheData.count, UnityEngine.Time.frameCount); #endif return(true); }
bool m_Update() { if (!CacheManager.CheckDependenciesComplete(cRequest)) { return(true); //wait } if (cRequest.error != null) { return(false); //assetbundle is error } if (m_Bundle == null) { m_Bundle = CacheManager.TryGetCache(cRequest.keyHashCode); } if (m_Bundle == null) { return(true); } if (m_Request != null) { return(!m_Request.isDone); } if (m_Bundle.isError || !m_Bundle.canUse) { cRequest.error = string.Format("load asset({0}) from bundle({1}) error", cRequest.assetName, cRequest.key); Debug.LogError(cRequest.error); return(false); } else { string assetName = cRequest.assetName; var typ = cRequest.assetType; bool isLoadAll = LoaderType.Typeof_ABAllAssets.Equals(typ); if (isLoadAll) { m_Request = m_Bundle.assetBundle.LoadAllAssetsAsync(); } else { m_Request = m_Bundle.assetBundle.LoadAssetAsync(cRequest.assetName, typ); } #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, " <color=#15A0A1> 1.2 Asset Request(assetName={0}) is done={1} key={2},frame={3} </color>", cRequest.assetName, m_Request.isDone, cRequest.key, Time.frameCount); #endif return(!m_Request.isDone); } }
/// <summary> /// real load assetbundle /// </summary> /// <param name="req"></param> /// <returns></returns> static protected AssetBundleDownloadOperation LoadAssetBundleInternal(CRequest req) { AssetBundleDownloadOperation abDownloadOp = null; if (!downloadingBundles.TryGetValue(req.key, out abDownloadOp)) { #if HUGULA_PROFILER_DEBUG Profiler.BeginSample(string.Format("LoadAssetBundleInternal ({0},{1},{2})", req.assetName, req.key, req.isShared)); #endif if (!UriGroup.CheckRequestCurrentIndexCrc(req)) //crc { abDownloadOp = new AssetBundleDownloadErrorOperation(); abDownloadOp.error = string.Format("assetbundle({0}) crc check wrong ", req.key); } else if (req.url.StartsWith(Common.HTTP_STRING)) //load assetbunlde { abDownloadOp = AssetBundleDownloadFromWebOperation.Get(); } else { abDownloadOp = AssetBundleDownloadFromDiskOperation.Get(); } abDownloadOp.SetRequest(req); downloadingBundles.Add(req.key, abDownloadOp); CacheData cached = null; CacheManager.CreateOrGetCache(req.keyHashCode, out cached);//cache data //load now if (bundleMax - inProgressBundleOperations.Count > 0) { inProgressBundleOperations.Add(abDownloadOp); abDownloadOp.BeginDownload(); } else { bundleQueue.Enqueue(abDownloadOp); } #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(req.key, "<color=#10f010>1.2 LoadAssetBundleInternal Request(key={0},isShared={1},assetname={2},dependencies.count={4})keyHashCode{3}, frameCount{5}</color>", req.key, req.isShared, req.assetName, req.keyHashCode, req.dependencies == null ? 0 : req.dependencies.Length, Time.frameCount); #endif #if HUGULA_PROFILER_DEBUG Profiler.EndSample(); #endif } else if (req.isShared) { req.ReleaseToPool(); } return(abDownloadOp); }
internal void SubtractReferCount() { var subre = CountMananger.Subtract(this.assetHashCode); #if HUGULA_CACHE_DEBUG HugulaDebug.FilterLogFormat(assetbundle, " SubtractReferCount: name({0}) abName({1}) assetHashCode({2}) referCount={3} ", this.name, assetbundle, assetHashCode, subre); #endif #if UNITY_EDITOR || !HUGULA_RELEASE if (subre == -1) { Debug.LogWarningFormat("SubtractReferCount: name({0}) abName({1}) assetHashCode({2},count={3}) refer delete error ", this.name, assetbundle, assetHashCode, subre); } #endif }
/// <summary> /// unload assetbundle false /// </summary> /// <param name="assetBundleName"></param> public static bool UnloadCacheFalse(string assetBundleName) { assetBundleName = ManifestManager.RemapVariantName(assetBundleName); int hash = LuaHelper.StringToHash(assetBundleName); if (!UnloadCacheFalse(hash)) { #if HUGULA_CACHE_DEBUG HugulaDebug.FilterLogWarningFormat(assetBundleName, "Unload Cache False {0} fail is null or locked ", assetBundleName); #endif return(false); } return(true); }
/// <summary> /// 根据组策略校验request.url的crc值。 /// 文件不存在或者校验失败返回false /// </summary> /// <param name="req"></param> /// <returns></returns> public static bool CheckUriCrc(CRequest req) { bool check = ManifestManager.CheckReqCrc(req); //CheckLocalFileCrc(req.url, out crc); if (!check) { var re = UriGroup.CheckAndSetNextUriGroup(req); //CUtils.SetRequestUri(req, 1); #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(req.key, "<color=#ffff00>CrcCheck.CheckUriCrc Req(assetname={0},url={1}) CheckFileCrc=false,SetNextUri={2}</color>", req.assetName, req.url, re); #endif return(re); } return(true); }
private void FinishDownload() { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, "<color=#15A0A1>1.5 AssetBundleDownloadFromDiskOperation is done Request(url={0},assetname={1},dependencies.count={3})keyHashCode{2},asyn={4},frameCount{5}</color>", cRequest.url, cRequest.assetName, cRequest.keyHashCode, cRequest.dependencies == null ? 0 : cRequest.dependencies.Length, cRequest.async, Time.frameCount); #endif if (m_abRequest != null) { assetBundle = m_abRequest.assetBundle; } if (assetBundle == null) { error = string.Format("the asset bundle({0}) is not exist. CRequest({1})", cRequest.key, cRequest.assetName); } m_abRequest = null; }
/// <summary> /// load group request /// </summary> /// <param name="bGroup"></param> static public void LoadGroupAsset(BundleGroundQueue bGroup) { if (bGroup.Count == 0) { Debug.LogWarning("LoadGroupAsset group.count ==0"); if (bGroup.onComplete != null) { bGroup.onComplete(false); } return; } #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat("LoadGroupAsset", "<color=#05AA01>0.0 Append LoadGroupAsset BundleGroundQueue(Count={0}priority={1}) frameCount{2}</color>", bGroup.Count, bGroup.priority, Time.frameCount); #endif bool flag = false; int priority = bGroup.priority; for (LinkedListNode <BundleGroundQueue> fristNode = bundleGroundQueue.First; fristNode != null; fristNode = fristNode.Next) { if (fristNode.Value.priority == priority) { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat("LoadGroupAsset", "<color=#05AA01>0.0 LoadGroupAsset AddAfter BundleGroundQueue(Count={0}priority={1}) frameCount{2}</color>", bGroup.Count, bGroup.priority, Time.frameCount); #endif bundleGroundQueue.AddAfter(fristNode, bGroup); flag = true; break; } if (fristNode.Value.priority < priority) { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat("LoadGroupAsset", "<color=#05AA01>0.0 LoadGroupAsset AddBefore BundleGroundQueue(Count={0}priority={1}) frameCount{2}</color>", bGroup.Count, bGroup.priority, Time.frameCount); #endif bundleGroundQueue.AddBefore(fristNode, bGroup); flag = true; break; } } if (!flag) { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat("LoadGroupAsset", "<color=#05AA01>0.0 LoadGroupAsset AddLast BundleGroundQueue(Count={0}priority={1}) frameCount{2}</color>", bGroup.Count, bGroup.priority, Time.frameCount); #endif bundleGroundQueue.AddLast(bGroup); } LoadingQueue(); }
bool _IsDone() { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, "<color=#15A0A1>2.1.1.1 AssetBundleLoadAssetOperationFull._IsDone Request(url={0},assetName={1}) ,m_Request={2},m_Data={3},error={4},frameCount={5}</color>", url, assetName, m_Request, m_Data, error, Time.frameCount); #endif // error if (error != null) { Debug.LogError(error); return(true); } if (m_Request != null && m_Request.isDone) { if (isLoadAll) { m_Data = m_Request.allAssets; } else { m_Data = m_Request.asset; } if (m_Data == null) { error = string.Format("load asset({0}) from {1} error", m_Request, url); } SetRequestData(cRequest, m_Data); #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, "<color=#15A0A1>2.1.1.2 AssetBundleLoadAssetOperationFull._IsDone async isdone Request(url={0},assetname={1}),m_Request={2},m_Data={3},error={4},loadAll={5},frameCount={6}</color>", url, assetName, m_Request, m_Data, error, isLoadAll, Time.frameCount); #endif return(true); } //no async load asset if (m_Data != null) { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, "<color=#15A0A1>2.1.1.3 AssetBundleLoadAssetOperationFull._IsDone isdone Request(url={0},assetName={1}) ,m_Request={2},m_Data={3},error={4},frameCount={5}</color>", url, assetName, m_Request, m_Data, error, Time.frameCount); #endif SetRequestData(cRequest, m_Data); return(true); } return(false); }
/// <summary> /// finish assetbundle /// </summary> /// <param name="operation"></param> static void ProcessFinishedBundleOperation(AssetBundleDownloadOperation operation) { #if HUGULA_PROFILER_DEBUG Profiler.BeginSample(string.Format("ResourcesLoader.ProcessFinishedBundleOperation CRequest({0},shared={1})", operation.cRequest.assetName, operation.cRequest.isShared)); #endif var req = operation.cRequest; bool isError = operation.assetBundle == null; var ab = operation.assetBundle; AssetBundleDownloadOperation download = operation; if (!isError) { CacheManager.AddSourceCacheDataFromWWW(ab, req); } else { #if UNITY_EDITOR Debug.LogWarning(operation.error); #endif CacheManager.AddErrorSourceCacheDataFromReq(req); } #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(req.key, "<color=#10f010>1.9 ProcessFinishedBundleOperation AssetBundle Loaded Request(url={0},assetname={1},dependencies.count={3},keyHashCode{2}),isError={4} frameCount{5}</color>", req.url, req.assetName, req.keyHashCode, req.dependencies == null ? 0 : req.dependencies.Length, isError, Time.frameCount); #endif //begin load asset InsertAssetBundleLoadAssetOperation(download); downloadingBundles.Remove(req.key); download.ReleaseToPool(); if (isError) { CallOnAssetBundleErr(req); } else { CallOnAssetBundleComplete(req, ab); } if (req.isShared) { req.ReleaseToPool(); } #if HUGULA_PROFILER_DEBUG Profiler.EndSample(); #endif }
internal static bool CheckRemove(int keyhashcode) { if (removeDic.ContainsKey(keyhashcode)) { removeDic.Remove(keyhashcode); CacheData cache = CacheManager.TryGetCache(keyhashcode); AddDependenciesReferCount(cache); #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cache.assetBundleKey, "CheckRemove AssetBundle(key={0},hash={1}),frameCount{5}</color>", cache.assetBundleKey, cache.assetHashCode, Time.frameCount); #endif return(true); } else { return(false); } }
void m_Start() { #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, " <color=#15A0A1> 1.2 LoadAssetOperationSimulation Request(assetName={0}) key={1} </color>", cRequest.assetName, cRequest.key); #endif string[] assetPaths = UnityEditor.AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(cRequest.key, cRequest.assetName); if (assetPaths.Length == 0) { cRequest.error = "There is no asset with name \"" + cRequest.assetName + "\" in " + cRequest.key; Debug.LogError(cRequest.error); } var assetType = cRequest.assetType; bool loadAll = LoaderType.Typeof_ABAllAssets.Equals(assetType); object data = null; List <UnityEngine.Object> datas = null; foreach (var p in assetPaths) { if (loadAll) { // data UnityEngine.Object[] target = UnityEditor.AssetDatabase.LoadAllAssetsAtPath(p); if (datas == null) { datas = new List <UnityEngine.Object> (); datas.AddRange(target); } else { datas.AddRange(target); } data = datas.ToArray(); } else { UnityEngine.Object target = UnityEditor.AssetDatabase.LoadAssetAtPath(p, assetType); if (target) { data = target; break; } } } cRequest.data = data; }
public void BeginDownload() { #if HUGULA_LOADER_DEBUG var req = cRequest; HugulaDebug.FilterLogFormat(req.key, "<color=#10f010>1.3 BeginDownload AssetBundle Request(key={0},assetname={1},dependencies.count={3})keyHashCode{2}, frameCount{4}</color>", req.key, req.assetName, req.keyHashCode, req.dependencies == null ? 0 : req.dependencies.Length, Time.frameCount); #endif #if HUGULA_PROFILER_DEBUG Profiler.BeginSample(string.Format("AssetBundleDownloadOperation.BeginDownload CRequest({0},{1},shared={2}) ,", cRequest.assetName, cRequest.key, cRequest.isShared)); #endif if (m_BeginDownload != null) { m_BeginDownload(); } #if HUGULA_PROFILER_DEBUG Profiler.EndSample(); #endif }
bool _IsDone() { // error if (error != null) { Debug.LogWarning(error); return(true); } //no async load asset if (m_Data != null) { SetRequestData(cRequest, m_Data); return(true); } if (m_Request != null && m_Request.isDone) { bool loadAll = CacheManager.Typeof_ABAllAssets.Equals(cRequest.assetType); #if HUGULA_LOADER_DEBUG HugulaDebug.FilterLogFormat(cRequest.key, "<color=#15A0A1>2.1 AssetBundleLoadAssetOperationFull isDone Request(url={0},assetname={1},dependencies.count={3})keyHashCode{2},asyn={4},loadAll={5},frameCount{6}</color>", cRequest.url, cRequest.assetName, cRequest.keyHashCode, cRequest.dependencies == null ? 0 : cRequest.dependencies.Length, cRequest.async, loadAll, Time.frameCount); #endif if (loadAll) { m_Data = m_Request.allAssets; } else { m_Data = m_Request.asset; } if (m_Data == null) { error = string.Format("load asset({0}) from {1} error", cRequest.assetName, cRequest.key); } SetRequestData(cRequest, m_Data); return(true); } else { return(false); } }