Ejemplo n.º 1
0
        /// <summary>
        /// HTTPステータスコード確認
        /// </summary>
        /// <param name="errorCode">エラーコード</param>
        /// <returns>true:HTTPステータスコード、false:HTTPステータスコードではない</returns>
        public static bool IsHttpStatusCode(this AssetBundleErrorCode errorCode)
        {
            var result = (AssetBundleErrorCode.HttpStatusCodeBegin <= errorCode) && (errorCode < AssetBundleErrorCode.HttpStatusCodeEnd);

            result = result || ((AssetBundleErrorCode.InitializeHttpStatusCodeBegin <= errorCode) && (errorCode < AssetBundleErrorCode.InitializeHttpStatusCodeEnd));
            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 初期化用エラーコード解析
        /// </summary>
        /// <param name="errorCode">エラーコード</param>
        /// <param name="request">解析対象のWebリクエスト</param>
        /// <returns>true:正常、false:エラー</returns>
        public static bool TryParseForInitialize(UnityWebRequest request, out AssetBundleErrorCode errorCode)
        {
            var result = false;
            AssetBundleErrorCode errorCodeNoInitialize;

            if (TryParse(request, out errorCodeNoInitialize))
            {
                if ((AssetBundleErrorCode.HttpStatusCodeBegin <= errorCodeNoInitialize) && (errorCodeNoInitialize < AssetBundleErrorCode.HttpStatusCodeEnd))
                {
                    errorCode = errorCodeNoInitialize - AssetBundleErrorCode.HttpStatusCodeBegin + AssetBundleErrorCode.InitializeHttpStatusCodeBegin;
                    result    = true;
                }
                else if (errorCodeNoInitialize == AssetBundleErrorCode.Timeout)
                {
                    errorCode = AssetBundleErrorCode.InitializeTimeout;
                    result    = true;
                }
                else if (errorCodeNoInitialize == AssetBundleErrorCode.NetworkError)
                {
                    errorCode = AssetBundleErrorCode.InitializeNetworkError;
                    result    = true;
                }
                else
                {
                    errorCode = AssetBundleErrorCode.Null;
                }
            }
            else
            {
                errorCode = AssetBundleErrorCode.Null;
            }
            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// エラーコード解析
        /// </summary>
        /// <param name="request">解析対象のWebリクエスト</param>
        /// <param name="errorCode">エラーコード</param>
        /// <returns>true:正常、false:エラー</returns>
        public static bool TryParse(UnityWebRequest request, out AssetBundleErrorCode errorCode)
        {
            var result = false;

            if (!request.isDone)
            {
                errorCode = AssetBundleErrorCode.Timeout;
                result    = true;
            }
            else if (request.isNetworkError)
            {
                errorCode = AssetBundleErrorCode.NetworkError;
                result    = true;
            }
            else if (request.isHttpError)
            {
                errorCode = (AssetBundleErrorCode)(request.responseCode + (int)AssetBundleErrorCode.HttpStatusCodeBegin);
                result    = true;
            }
            else
            {
                errorCode = AssetBundleErrorCode.Null;
            }
            return(result);
        }
Ejemplo n.º 4
0
        void IErrorReceiver.OnNotFoundError <T>(AssetBundleErrorCode errorCode, string message, Action <T> onLoaded)
        {
#if UNITY_EDITOR
            Debug.LogError(message);
            onLoaded.Invoke(null);
#else
            OnError(errorCode, message);
#endif
        }
Ejemplo n.º 5
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="assetBundleName">アセットバンドル名</param>
 /// <param name="errorCode">エラーコード</param>
 /// <param name="url">URL</param>
 /// <param name="ignoreEvent">無視イベント</param>
 /// <param name="retryEvent">リトライイベント</param>
 private InitializeErrorHandle(string assetBundleName, AssetBundleErrorCode errorCode, string url, UnityAction ignoreEvent, UnityAction retryEvent)
 {
     m_AssetBundleName            = assetBundleName;
     m_AssetBundleNameWithVariant = null;
     m_URL         = url;
     m_FileName    = null;
     m_ErrorCode   = errorCode;
     m_IgnoreEvent = ignoreEvent;
     m_RetryEvent  = retryEvent;
 }
Ejemplo n.º 6
0
        void OnError(AssetBundleErrorCode errorCode, string message)
        {
            Debug.LogError(message);

            if (errorHandler == null)
            {
                Debug.LogError("has not set asset bundle error handler");
                return;
            }

            errorHandler.OnError(errorCode, message);
        }
Ejemplo n.º 7
0
        void IAssetBundleErrorHandler.OnError(AssetBundleErrorCode errorCode, string message)
        {
            if (messageForCriticalError != null)
            {
                return;
            }

            var prefab = Resources.Load <Message>(MessagePrefabPath);

            messageForCriticalError = Instantiate <Message>(prefab);
            messageForCriticalError.Init(
                $"Code: {errorCode}\nmessage",
                () =>
            {
                Destroy(messageForCriticalError.gameObject);
                messageForCriticalError = null;
                Debug.Log("finish");

                Application.Quit();
            },
                null);
        }
        /// <summary>
        /// 如果缓存中有指定名称的bundle,则直接返回该bundle,否则重新加载
        /// </summary>
        /// <returns>The asset bundle.</returns>
        /// <param name="bundleName">Bundle name.</param>
        private AssetBundle LoadAssetBundle(string bundleName)
        {
            AssetBundle loadedBundle = GetLoadedAssetBundle(bundleName);

            if (loadedBundle == null)
            {
                string abFullPath = GetBundleFilePath(bundleName);

                loadedBundle = AssetBundle.LoadFromFile(abFullPath);

                bundleCacheDic.Add(bundleName, loadedBundle);

                Debug.LogFormat("asset:{0}--加载进内存", bundleName);
            }

            if (loadedBundle == null)
            {
                errorCode = AssetBundleErrorCode.AssetBundleNull;
            }

            return(loadedBundle);
        }
        /// <summary>
        /// 初始化manifest信息文件
        /// </summary>
        private void InitilizeManifest()
        {
            Debug.Log("initialize manifest!!!");

            string manifestName = CommonData.assetBundleRootName;

            string manifestBundlePath = GetBundleFilePath(manifestName);

            AssetBundle ab = AssetBundle.LoadFromFile(manifestBundlePath);

            if (ab == null)
            {
                errorCode = AssetBundleErrorCode.ManifestNull;
            }

            mainManifest = ab.LoadAsset <AssetBundleManifest> ("AssetBundleManifest");

            isManifestReady = mainManifest != null;

            Debug.Log(mainManifest);

            return;
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 异步加载资源
        /// </summary>
        /// <returns>The asset async.</returns>
        /// <param name="bundleName">Bundle name.</param>
        /// <param name="assetName">Asset name.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public AssetBundleRequest LoadAssetAsync <T>(string bundleName, string assetName = null)
            where T : Object
        {
            AssetBundle ab = GetLoadedAssetBundle(bundleName);

            if (ab == null)
            {
                LoadAllDependencies(bundleName);

                ab = LoadAssetBundle(bundleName);
            }

            if (ab == null)
            {
                errorCode = AssetBundleErrorCode.AssetBundleNull;
            }

            if (assetName != null)
            {
                return(ab.LoadAssetAsync <T> (assetName));
            }

            return(ab.LoadAllAssetsAsync <T> ());
        }
Ejemplo n.º 11
0
 void IErrorReceiver.OnError(AssetBundleErrorCode errorCode, string message)
 {
     OnError(errorCode, message);
 }
Ejemplo n.º 12
0
 /// <summary>
 /// アセット用作成
 /// </summary>
 /// <param name="errorCode">エラーコード</param>
 /// <param name="url">URL</param>
 /// <param name="ignoreEvent">無視イベント</param>
 /// <param name="retryEvent">リトライイベント</param>
 /// <returns>インスタンス</returns>
 public static InitializeErrorHandle CreateAsset(AssetBundleErrorCode errorCode, string url, UnityAction ignoreEvent, UnityAction retryEvent)
 {
     return(new InitializeErrorHandle(kAssetBundleNameForAsset, errorCode, url, ignoreEvent, retryEvent));
 }
Ejemplo n.º 13
0
        void IAssetBundleErrorHandler.OnError(AssetBundleErrorCode errorCode, string message)
        {
            string errorMessage = $"Code: {errorCode}\nmessage";

            errorSceneCaller.NotifyError(errorMessage);
        }
Ejemplo n.º 14
0
 /// <summary>
 /// HTTPステータスコード取得
 /// </summary>
 /// <param name="errorCode">エラーコード</param>
 /// <returns>HTTPステータスコード</returns>
 public static int?GetHttpStatusCode(this AssetBundleErrorCode errorCode)
 {
     return((errorCode.IsHttpStatusCode())? (int?)((int)errorCode % 1000): null);
 }
Ejemplo n.º 15
0
 /// <summary>
 /// エラー確認
 /// </summary>
 /// <param name="errorCode">エラーコード</param>
 /// <returns>true:エラー、false:正常</returns>
 public static bool IsError(this AssetBundleErrorCode errorCode)
 {
     return(errorCode != AssetBundleErrorCode.Null);
 }