// Use this for initialization void Start() { var baseDir = Application.platform.Equals(RuntimePlatform.WindowsEditor) ? Application.streamingAssetsPath : Application.persistentDataPath; var dir = Path.Combine(baseDir , "VideoPaks"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } Debug.Log("Asset bundle path: " + dir); var folder = Directory.GetDirectories(dir); foreach (var f in folder) { var dirInfo = new DirectoryInfo(f); var path = Path.Combine(f, VideopakManager.GetPlatformString(Application.platform)); path = Path.Combine(path, dirInfo.Name); AssetBundleFiles.Add(new FileInfo(path)); } OnAssetBundlesFound(AssetBundleFiles); }
static void BuildAll() { string rootDir = EditorUtility.SaveFolderPanel("Select output directory", "", ""); if (string.IsNullOrEmpty(rootDir)) { return; } foreach (string bundleName in AssetDatabase.GetAllAssetBundleNames()) { AssetBundleBuild buildInfo = new AssetBundleBuild(); buildInfo.assetBundleName = bundleName; buildInfo.assetNames = AssetDatabase.GetAssetPathsFromAssetBundle(bundleName); AssetBundleBuild[] buildMap = new AssetBundleBuild[] { buildInfo }; string pakDir = rootDir + "/" + bundleName + "/"; string iosDir = pakDir + VideopakManager.GetPlatformString(RuntimePlatform.IPhonePlayer); Directory.CreateDirectory(iosDir); BuildPipeline.BuildAssetBundles(iosDir, buildMap, BuildAssetBundleOptions.None, BuildTarget.iOS); string androidDir = pakDir + VideopakManager.GetPlatformString(RuntimePlatform.Android); Directory.CreateDirectory(androidDir); BuildPipeline.BuildAssetBundles(androidDir, buildMap, BuildAssetBundleOptions.None, BuildTarget.Android); string osxDir = pakDir + VideopakManager.GetPlatformString(RuntimePlatform.OSXPlayer); Directory.CreateDirectory(osxDir); #if UNITY_2017_3_OR_NEWER BuildPipeline.BuildAssetBundles(osxDir, buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneOSX); #else BuildPipeline.BuildAssetBundles(osxDir, buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneOSXUniversal); #endif } }
void BuildAssetBundle(string bundleName) { string targetFile = EditorUtility.SaveFilePanel("Select output file", _lastOutputPath, bundleName + ".zpak", "zpak"); if (string.IsNullOrEmpty(targetFile)) { return; } _lastOutputPath = Path.GetDirectoryName(targetFile); _outputLog = ""; AssetBundleBuild buildInfo = new AssetBundleBuild(); buildInfo.assetBundleName = bundleName; buildInfo.assetNames = AssetDatabase.GetAssetPathsFromAssetBundle(bundleName); AssetBundleBuild[] buildMap = { buildInfo }; PakManifest manifest = new PakManifest(_settings.pakName, _settings.author); manifest.version = 1; manifest.unityVersion = Application.unityVersion; string tmpPath = Path.Combine(FileUtil.GetUniqueTempPathInProject(), bundleName); Directory.CreateDirectory(tmpPath); if (_settings.icon != null) { // TODO: verify that it's actually a png string iconPath = Path.Combine(Application.dataPath, "../", AssetDatabase.GetAssetPath(_settings.icon)); File.Copy(iconPath, Path.Combine(tmpPath, "icon.png")); } string jsonPath = Path.Combine(tmpPath, "videopak.json"); string json = JsonUtility.ToJson(manifest, true); File.WriteAllText(jsonPath, json); for (int i = 0; i < platforms.Length; i++) { _outputLog += string.Format("building {0}..\n", platformNames[i]); string platformStr = VideopakManager.GetPlatformString(platforms[i]); string platformDir = Path.Combine(tmpPath, platformStr); Directory.CreateDirectory(platformDir); BuildPipeline.BuildAssetBundles(platformDir, buildMap, BuildAssetBundleOptions.None, targets[i]); } _outputLog += string.Format("compressing..\n"); VideopakManager.CompressPak(tmpPath, targetFile); _outputLog += string.Format("build succeeded\n\n"); }
void BuildAssetBundle(VideopakSettings.BundleConfig config, string targetFile) { if (string.IsNullOrEmpty(targetFile)) { return; } _lastOutputPath = Path.GetDirectoryName(targetFile); AssetBundleBuild buildInfo = new AssetBundleBuild(); buildInfo.assetBundleName = config.bundleName; buildInfo.assetNames = AssetDatabase.GetAssetPathsFromAssetBundle(config.bundleName); AssetBundleBuild[] buildMap = { buildInfo }; PakManifest manifest = new PakManifest(config.pakName, config.author); manifest.version = 1; manifest.unityVersion = Application.unityVersion; string tmpPath = Path.Combine(FileUtil.GetUniqueTempPathInProject(), config.bundleName); Directory.CreateDirectory(tmpPath); if (config.icon != null) { string iconPath = Path.Combine(Application.dataPath, "../", AssetDatabase.GetAssetPath(config.icon)); File.Copy(iconPath, Path.Combine(tmpPath, "icon.png")); } string jsonPath = Path.Combine(tmpPath, "videopak.json"); string json = JsonUtility.ToJson(manifest, true); File.WriteAllText(jsonPath, json); for (int i = 0; i < platforms.Length; i++) { AddLogText(string.Format("building {0}..\n", platformNames[i])); string platformStr = VideopakManager.GetPlatformString(platforms[i]); string platformDir = Path.Combine(tmpPath, platformStr); Directory.CreateDirectory(platformDir); BuildPipeline.BuildAssetBundles(platformDir, buildMap, BuildAssetBundleOptions.None, targets[i]); } AddLogText(string.Format("compressing..\n")); VideopakManager.CompressPak(tmpPath, targetFile); AddLogText(string.Format("build succeeded\n\n")); }