/// <summary> /// アセットバンドルのテスト /// </summary> /// <returns></returns> IEnumerator AssetBundleStartup() { // 汎用アセットバンドルマネージャの生成 if (AssetBundleManager.Instance == null) { // マネージャのインスタンスを生成する AssetBundleManager.Create(transform); // マニフェストをダウンロードする #if UNITY_EDITOR || DEVELOPMENT_BUILD AssetBundleManager.SecretPathEnabled = false; // アセットバンドルをローカルストレージに保存いる際にファイル名を暗号化する #else AssetBundleManager.SecretPathEnabled = true; // アセットバンドルをローカルストレージに保存いる際にファイル名を暗号化する #endif // AssetBundleManager.localPriority = AssetBundleManager.LocalPriority.High ; // 優先 Resources > StreamingAssets > AssetBundle AssetBundleManager.LoadPriorityType = AssetBundleManager.LoadPriority.Local; // 優先 StreamingAssets > Resources > AssetBundle Debug.LogWarning("[注意]各種アセットは StreamingAssets を優先的に使用します"); AssetBundleManager.UseStreamingAssets = false; // ネットワーク上のアセットバンドルが見つからない場合は StreamingAssets から探す AssetBundleManager.FastLoadEnabled = false; // 一部同期化で高速化読み出し // 実際はマスターの通信が完了してからそちらから取得する // string tDomainName = "http://vms010.ibrains.co.jp/ibrains/moe/" ; string domainName = "http://localhost:32000/Sample/"; // マニフェストを登録 AssetBundleManager.AddManifest(domainName + Define.AssetBundlePlatformName + "/" + Define.AssetBundlePlatformName); // デフォルトマニフェスト名を登録する AssetBundleManager.DefaultManifestName = Define.AssetBundlePlatformName; // 登録された全てのマニフェストのダウンロード yield return(AssetBundleManager.LoadAllManifestsAsync()); // 全ての Manifest がダウンロードされるのを待つ while (AssetBundleManager.IsAllManifestsCompleted == false) { if (AssetBundleManager.GetAnyManifestError(out string manifestName, out string manifestError) == true) { #if UNITY_EDITOR Debug.LogError("マニフェストのロードでエラーが発生しました:" + manifestName + " -> " + manifestError); #endif break; } yield return(null); } // 各マニフェストのキャッシュサイズを設定するサンプル AssetBundleManager.ManifestInfo m = AssetBundleManager.GetManifest(Define.AssetBundlePlatformName); if (m != null) { m.CacheSize = 1024 * 1024 * 1024; // キャッシュサイズを1GBに設定 string sizeName = ""; long size = m.CacheSize; if (size < 1024L) { sizeName = size + " byte"; } else if (size < (1024L * 1024L)) { sizeName = (size / 1024L) + " KB"; } else if (size < (1024L * 1024L * 1024L)) { sizeName = (size / (1024L * 1024L)) + " MB"; } else if (size < (1024L * 1024L * 1024L * 1024L)) { sizeName = (size / (1024L * 1024L * 1024L)) + "GB"; } Debug.LogWarning("マニフェスト " + m.ManifestName + " のキャッシュサイズを " + sizeName + " に制限しました。"); } } //------------------------------------------------- StartClock(); //----------------- string assetBundlePath = "Textures/button"; string[] subAssetName = { "button_0", "button_1" }; string atlasAssetBundlePath = "Textures/Atlas"; Sprite[] sprite = new Sprite[2]; int category = 8; int type = 0; AssetBundleManager.UseResources = AssetBundleManager.UserResources.None; // ネットワーク上のアセットバンドルが見つからない場合は Resources から探す AssetBundleManager.UseLocalAsset = false; if (category == 0) { // Asset if (type == 0) { // Async(? ms) // var request = AssetBundleManager.LoadAssetAsync<Sprite>( path ) ; // yield return request ; // sprite = request.Asset as Sprite ; yield return(AssetBundleManager.LoadAssetAsync <Sprite>(assetBundlePath, (_) => { sprite[0] = _; }, AssetBundleManager.CachingType.Same)); StopClock(); StartClock(); sprite[0] = AssetBundleManager.LoadAsset <Sprite>(assetBundlePath, AssetBundleManager.CachingType.Same); } else if (type == 1) { // Sync(仮 : 1.5~2.0 ms|実 : 6.5~7.0 ms) // if( AssetBundleManager.Exists( path ) == false ) // { sprite[0] = AssetBundleManager.LoadAsset <Sprite>(assetBundlePath); // } } else if (type == 2) { // Local Asset - Simple(1.5~2.0 ms) sprite[0] = Asset.Load <Sprite>(assetBundlePath, "png"); } else if (type == 3) { // Resources(0.5 ms) sprite[0] = Resources.Load <Sprite>(assetBundlePath); } } else if (category == 1) { // SubAsset if (type == 0) { // Async(? ms) // var request = AssetBundleManager.LoadAssetAsync<Sprite>( path ) ; // yield return request ; // sprite = request.Asset as Sprite ; yield return(AssetBundleManager.LoadSubAssetAsync <Sprite>(assetBundlePath, subAssetName[0], (_) => { sprite[0] = _; })); } else if (type == 1) { // Sync(仮 : 1.5~2.0 ms|実 : 6.5~7.0 ms) // if( AssetBundleManager.Exists( path ) == false ) // { sprite[0] = AssetBundleManager.LoadSubAsset <Sprite>(assetBundlePath, subAssetName[0]); // } } } else if (category == 2) { // AllSubAssets if (type == 0) { // Async(? ms) // var request = AssetBundleManager.LoadAssetAsync<Sprite>( path ) ; // yield return request ; // sprite = request.Asset as Sprite ; yield return(AssetBundleManager.LoadSubAssetAsync <Sprite>(assetBundlePath, subAssetName[0], (_) => { sprite[0] = _; }, AssetBundleManager.CachingType.Same)); yield return(AssetBundleManager.LoadSubAssetAsync <Sprite>(assetBundlePath, subAssetName[1], (_) => { sprite[1] = _; }, AssetBundleManager.CachingType.Same)); } else if (type == 1) { // Sync(仮 : 1.5~2.0 ms|実 : 6.5~7.0 ms) // if( AssetBundleManager.Exists( path ) == false ) // { sprite[0] = AssetBundleManager.LoadSubAsset <Sprite>(assetBundlePath, subAssetName[0], AssetBundleManager.CachingType.Same); sprite[1] = AssetBundleManager.LoadSubAsset <Sprite>(assetBundlePath, subAssetName[1], AssetBundleManager.CachingType.Same); // } } } else if (category == 3) { if (type == 0) { // Async(? ms) // var request = AssetBundleManager.LoadAssetAsync<Sprite>( path ) ; // yield return request ; // sprite = request.Asset as Sprite ; Sprite[] sprites = null; yield return(AssetBundleManager.LoadAllAssetsAsync <Sprite>(atlasAssetBundlePath, (_) => { sprites = _; })); if (sprites != null) { sprite[0] = sprites[0]; sprite[1] = sprites[1]; } } else if (type == 1) { // Sync(仮 : 1.5~2.0 ms|実 : 6.5~7.0 ms) // if( AssetBundleManager.Exists( path ) == false ) // { Sprite[] sprites = AssetBundleManager.LoadAllAssets <Sprite>(atlasAssetBundlePath); // } sprite[0] = sprites[0]; sprite[1] = sprites[1]; } } else if (category == 4) { if (type == 0) { // Async(? ms) // var request = AssetBundleManager.LoadAssetAsync<Sprite>( path ) ; // yield return request ; // sprite = request.Asset as Sprite ; Sprite[] sprites = null; yield return(AssetBundleManager.LoadAllSubAssetsAsync <Sprite>(assetBundlePath, (_) => { sprites = _; })); if (sprites != null) { sprite[0] = sprites[0]; sprite[1] = sprites[1]; } } else if (type == 1) { // Sync(仮 : 1.5~2.0 ms|実 : 6.5~7.0 ms) // if( AssetBundleManager.Exists( path ) == false ) // { Sprite[] sprites = AssetBundleManager.LoadAllSubAssets <Sprite>(assetBundlePath); // } sprite[0] = sprites[0]; sprite[1] = sprites[1]; } } else if (category == 5) { // if( type == 0 ) // { yield return(AssetBundleManager.AddSceneAsync("scenes/OverlayScene")); // } } else if (category == 6) { // 単独ファイルのダウンロード string sceneAssetBundlePath = "Scenes/OverlayScene"; if (AssetBundleManager.Exists(sceneAssetBundlePath) == false) { Debug.LogWarning("------> " + sceneAssetBundlePath + " をダウンロードする"); var request = AssetBundleManager.DownloadAssetBundleAsync(sceneAssetBundlePath); Debug.LogWarning("ダウンロードサイズ : " + request.EntireDataSize); while (true) { Debug.LogWarning("ダウンロード済み : サイズ = " + request.StoredDataSize + " 割合 = " + request.Progress); if (request.IsDone == true) { Debug.LogWarning("成功"); break; } if (string.IsNullOrEmpty(request.Error) == false) { Debug.LogWarning("失敗 : " + request.Error); break; } yield return(null); } } else { Debug.LogWarning("------> " + sceneAssetBundlePath + " は既にダウンロード済み"); } } else if (category == 7) { // 複数ファイルのダウンロード string tag = "t1"; string[] paths = AssetBundleManager.GetAllAssetBundlePathsWithTag(tag, true, true); if (paths != null && paths.Length > 0) { Debug.LogWarning("------> " + paths.Length + " ファイルをダウンロードする"); var request = AssetBundleManager.DownloadAssetBundleWithTagAsync(tag); Debug.LogWarning("ダウンロード : サイズ = " + request.EntireDataSize + " 個数 = " + request.EntireFileCount); while (true) { Debug.LogWarning("ダウンロード済み : サイズ = " + request.StoredDataSize + " 個数 = " + request.StoredFileCount + " 割合 = " + request.Progress + " "); if (request.IsDone == true) { Debug.LogWarning("成功"); break; } if (string.IsNullOrEmpty(request.Error) == false) { Debug.LogWarning("失敗 : " + request.Error); break; } yield return(null); } } else { Debug.LogWarning("------> 既にダウンロード済み"); } } else if (category == 8) { string modelPath = "Models/01/Prefabs//Model"; GameObject modelPrefab = null; if (type == 0) { yield return(AssetBundleManager.LoadAssetAsync <GameObject>(modelPath, (_) => { modelPrefab = _; }, AssetBundleManager.CachingType.Same)); } else if (type == 1) { modelPrefab = AssetBundleManager.LoadAsset <GameObject>(modelPath); } if (m_ModelBase != null && modelPrefab != null) { m_ModelBase.AddPrefab(modelPrefab); } } if (sprite != null && m_Image[0] != null) { m_Image[0].sprite = sprite[0]; } if (sprite[1] != null && m_Image[1] != null) { m_Image[1].sprite = sprite[1]; } //----------------- StopClock(); //------------------------------------------------- yield break; }