Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
        }