public static void WriteBundleBuildConfig(BundleBuildConfig config) { if (config == null) { return; } string configPath = GetBundleBuildConfigPath(); string dir = Path.GetDirectoryName(configPath); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var json = JsonConvert.SerializeObject(config, Formatting.Indented); File.WriteAllText(configPath, json); }
public static BundleBuildConfig ReadBundleBuildConfig() { BundleBuildConfig bundlePackConfig = null; string configPath = GetBundleBuildConfigPath(); if (File.Exists(configPath)) { string configContent = File.ReadAllText(configPath); bundlePackConfig = JsonConvert.DeserializeObject <BundleBuildConfig>(configContent); } if (bundlePackConfig == null) { bundlePackConfig = new BundleBuildConfig(); } return(bundlePackConfig); }
public static void PackAssetBundle(AssetPackerConfig packerConfig, BundleBuildConfig buildConfig) { IAssetBundlePacker bundlePacker = null; Type[] bundlePackerTypes = AssemblyUtility.GetDerivedTypes(typeof(IAssetBundlePacker)); if (bundlePackerTypes != null && bundlePackerTypes.Length > 0) { bundlePacker = (IAssetBundlePacker)Activator.CreateInstance(bundlePackerTypes[0]); } if (bundlePacker == null) { Debug.LogError("AssetPackerUtil::PackAssetBundle->DoPackAssetBundle is null."); return; } if (string.IsNullOrEmpty(buildConfig.bundleOutputDir)) { Debug.Log("AssetPackerUtil::PackAssetBundle->bundleOutputDir is null."); return; } string outputDir = $"{buildConfig.bundleOutputDir}/{buildConfig.buildTarget.ToString()}/assetbundles"; if (buildConfig.cleanupBeforeBuild && Directory.Exists(outputDir)) { Directory.Delete(outputDir, true); } if (!Directory.CreateDirectory(outputDir).Exists) { Debug.LogError("AssetPackUitl::PackAssetBundle->Folder is not found. dir = " + outputDir); return; } AssetBundleConfig bundleConfig = bundlePacker.PackAssetBundle(packerConfig, buildConfig, outputDir); var json = JsonConvert.SerializeObject(bundleConfig, Formatting.Indented); string jsonFilePath = $"{outputDir}/{AssetConst.ASSET_BUNDLE_CONFIG_NAME}"; File.WriteAllText(jsonFilePath, json); }
private void DrawPackOperation() { if (bundleBuildConfig == null) { bundleBuildConfig = AssetPackerUtil.ReadBundleBuildConfig(); } EditorGUILayout.BeginHorizontal(EditorStyles.helpBox); { EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.ExpandHeight(true), GUILayout.ExpandWidth(true)); { EditorGUILayout.LabelField(Contents.BuildTitleContent, EGUIStyles.MiddleCenterLabel); EditorGUI.BeginChangeCheck(); { bundleBuildConfig.bundleOutputDir = EGUILayout.DrawDiskFolderSelection(Contents.BuildOutputDirStr, bundleBuildConfig.bundleOutputDir); bundleBuildConfig.pathFormat = (BundlePathFormatType)EditorGUILayout.EnumPopup(Contents.BuildPathFormatContent, bundleBuildConfig.pathFormat); bundleBuildConfig.cleanupBeforeBuild = EditorGUILayout.Toggle(Contents.BuildCleanup, bundleBuildConfig.cleanupBeforeBuild); bundleBuildConfig.buildTarget = (ValidBuildTarget)EditorGUILayout.EnumPopup(Contents.BuildTargetContent, bundleBuildConfig.buildTarget); bundleBuildConfig.compression = (CompressOption)EditorGUILayout.EnumPopup(Contents.BuildCompressionContent, bundleBuildConfig.compression); } if (EditorGUI.EndChangeCheck()) { AssetPackerUtil.WriteBundleBuildConfig(bundleBuildConfig); } } EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Width(160), GUILayout.ExpandHeight(true)); { EditorGUILayout.LabelField(Contents.OperationTitleContent, EGUIStyles.MiddleCenterLabel); if (GUILayout.Button(Contents.OperationBuildAddressContent)) { AssetAddressUtil.BuildAssetAddressConfig(); } EditorGUILayout.Space(); if (GUILayout.Button(Contents.OperationCleanBundleNameContent)) { AssetPackerUtil.ClearBundleNames(true); } if (GUILayout.Button(Contents.OperationSetBundleNameContent)) { AssetPackerUtil.SetAssetBundleNames(assetPackerConfig, bundleBuildConfig.pathFormat, true); } EditorGUILayout.Space(); if (GUILayout.Button("Pack Bundle")) { AssetPackerUtil.PackAssetBundle(assetPackerConfig, bundleBuildConfig); } } EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Width(160)); { EGUI.BeginGUIBackgroundColor(Color.red); { if (GUILayout.Button(Contents.OperationAutoBuildContent, GUILayout.ExpandHeight(true), GUILayout.ExpandWidth(true))) { EditorApplication.delayCall += () => { AssetAddressUtil.BuildAssetAddressConfig(); AssetPackerUtil.ClearBundleNames(true); AssetPackerUtil.SetAssetBundleNames(assetPackerConfig, bundleBuildConfig.pathFormat, true); AssetPackerUtil.PackAssetBundle(assetPackerConfig, bundleBuildConfig); }; } } EGUI.EndGUIBackgroundColor(); } EditorGUILayout.EndVertical(); } EditorGUILayout.EndHorizontal(); }