/// <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); }
/// <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); }
/// <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); }
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 }
/// <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; }
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); }
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; }
/// <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> ()); }
void IErrorReceiver.OnError(AssetBundleErrorCode errorCode, string message) { OnError(errorCode, message); }
/// <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)); }
void IAssetBundleErrorHandler.OnError(AssetBundleErrorCode errorCode, string message) { string errorMessage = $"Code: {errorCode}\nmessage"; errorSceneCaller.NotifyError(errorMessage); }
/// <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); }
/// <summary> /// エラー確認 /// </summary> /// <param name="errorCode">エラーコード</param> /// <returns>true:エラー、false:正常</returns> public static bool IsError(this AssetBundleErrorCode errorCode) { return(errorCode != AssetBundleErrorCode.Null); }