Ejemplo n.º 1
0
        public static byte[] SyncDownloadBytes(string path, bool removeImpurity = true)
        {
            byte[] rawBytes = null;
            using (UnityWebRequest www = UnityWebRequest.Get(path))
            {
                www.Send();
                while (true)
                {
                    if (www.isNetworkError || www.isHttpError)
                    {
                        Debugger.LogError("failed to load path->" + path);
                        break;
                    }

                    if (www.isDone)
                    {
                        break;
                    }
                }

                try
                {
                    if (www.isDone && (!www.isNetworkError && !www.isHttpError))
                    {
                        rawBytes = www.downloadHandler.data;
                        if (removeImpurity)
                        {
                            _RemoveImpurity(rawBytes, null, false);
                        }

                        return(rawBytes);
                    }
                    else
                    {
                        Debug.LogError("sync read file error->" + www.error + "^" + ResUpdate.ConvertPathToName(path));
                    }
                }
                catch (Exception e)
                {
                    Debugger.LogError("syn read bytes failed->" + e.ToString());
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
        private IEnumerator CreateAssetBundle_Offset(string name, string path, ulong offset, Request request, EndLoadBundle endLoad, System.Object ud, bool assetBundle)//, bool cb_whatever)
        {
            if (Config.Detail_Debug_Log())
            {
                Debug.LogWarning("begin create asset ---------->" + name);
            }

            AssetBundleCreateRequest result = AssetBundle.LoadFromFileAsync(path, 0, offset);

            yield return(result);

            if (Config.Detail_Debug_Log())
            {
                Debug.LogWarning("end create asset ----------->" + name);
            }

            if (!result.isDone || result.assetBundle == null)
            {
                if (Config.Debug_Log())
                {
                    Debugger.LogError("Failed to create asset bundle: " + path + "^" + ResUpdate.ConvertPathToName(path));
                }
                cache.Remove(name);
                ProcessRequest(request, (System.Object)endLoad, ud);
                yield break;
            }
            if (!assetBundle)
            {
                request.asset = result.assetBundle.mainAsset;
                if (Config.Detail_Debug_Log())
                {
                    if (result.assetBundle.mainAsset != null)
                    {
                        Debug.LogWarning("create asset bundle type->" + result.assetBundle.mainAsset);
                    }
                }
            }
            else
            {
                request.asset = result.assetBundle;
            }

            if (request.asset == null)
            {
                UnityEngine.Object[] arr = result.assetBundle.LoadAllAssets();
                if (arr != null && arr.Length > 0)
                {
                    request.asset = arr[0];
                    if (arr.Length > 1)
                    {
                        for (int i = 1, count = arr.Length; i < count; i++)
                        {
                            Resources.UnloadAsset(arr[i]);
                        }
                    }
                }
            }

            if (request.asset == null)
            {
                if (Config.Debug_Log())
                {
                    Debugger.LogError("Failed to load asset:%s, asset is null", ResUpdate.ConvertPathToName(path));
                }
            }

            request.referenceNum++;
            ProcessRequest(request, (System.Object)endLoad, ud);

            if (!assetBundle)
            {
                CoroutineHelper.CreateCoroutineHelper(AsynUnloadAssetBundle(result.assetBundle));
            }
        }