static public void UnpackAsset() { AssetBundleView wnd = ScriptableObject.CreateInstance <AssetBundleView>(); wnd.ShowUtility(); wnd.titleContent = new GUIContent("View asset bundle"); wnd.position = new Rect(100, 50, Screen.width - 600, Screen.height - 200); }
private IEnumerator Donwload() { var url = preUrl + postUrl; if (String.IsNullOrEmpty(postUrl)) { Debug.LogError("このURLは無効です"); yield break; } else { Debug.Log("ダウンロード先:\n" + url); } using (var request = UnityWebRequest.GetAssetBundle(url)) { yield return(request.Send()); while (!request.isDone) { if (request.isError) { Debug.LogError(request.error); yield break; } yield return(null); } if (request.responseCode != 200) { if (request.responseCode == 404) { Debug.LogError("そのURLは無効です"); } else { Debug.LogError("エラーです"); } yield break; } var bundle = ((DownloadHandlerAssetBundle)request.downloadHandler).assetBundle; if (bundle == null) { yield break; } if (dataBase == null) { Debug.LogError("設定ファイルが存在しません"); yield break; } var allAssets = bundle.LoadAllAssets(); var prefabAssets = allAssets.Where(obj => obj is GameObject) .Cast <GameObject>() .ToArray(); if (prefabAssets.Any()) { dataBase.LoadAssetBundle(AssetType.Prefab, prefabAssets); } var materialAssets = allAssets.Where(obj => obj is Material) .Cast <Material>() .ToArray(); if (materialAssets.Any()) { dataBase.LoadAssetBundle(AssetType.Material, materialAssets); } var spriteAssets = allAssets.Where(obj => obj is Sprite) .Cast <Sprite>() .ToArray(); if (spriteAssets.Any()) { dataBase.LoadAssetBundle(AssetType.Sprite, spriteAssets); } var soundAssets = allAssets.Where(obj => obj is AudioClip) .Cast <AudioClip>() .ToArray(); if (soundAssets.Any()) { dataBase.LoadAssetBundle(AssetType.Sound, soundAssets); } var otherAssets = allAssets.Where(obj => !(obj is GameObject)) .Where(obj => !(obj is Material)) .Where(obj => !(obj is Sprite)) .Where(obj => !(obj is AudioClip)) .ToArray(); if (otherAssets.Any()) { dataBase.LoadAssetBundle(AssetType.Other, otherAssets); } AssetBundleView.Open(); bundle.Unload(false); } }