private void OnEnable() { m_Controller = new AssetBundleBuilderController(); m_Controller.OnLoadingAssetBundle += OnLoadingAssetBundle; m_Controller.OnLoadingAsset += OnLoadingAsset; m_Controller.OnLoadCompleted += OnLoadCompleted; m_Controller.OnAnalyzingAsset += OnAnalyzingAsset; m_Controller.OnAnalyzeCompleted += OnAnalyzeCompleted; m_Controller.ProcessingAssetBundle += OnProcessingAssetBundle; m_Controller.ProcessAssetBundleComplete += OnProcessAssetBundleComplete; m_Controller.BuildAssetBundlesError += OnBuildAssetBundlesError; m_OrderBuildAssetBundles = false; if (m_Controller.Load()) { Debug.Log("Load configuration success."); m_BuildEventHandlerTypeNameIndex = 0; string[] buildEventHandlerTypeNames = m_Controller.GetBuildEventHandlerTypeNames(); for (int i = 0; i < buildEventHandlerTypeNames.Length; i++) { if (m_Controller.BuildEventHandlerTypeName == buildEventHandlerTypeNames[i]) { m_BuildEventHandlerTypeNameIndex = i; break; } } m_Controller.RefreshBuildEventHandler(); } else { Debug.LogWarning("Load configuration failure."); } }
private void OnGUI() { EditorGUILayout.BeginVertical(GUILayout.Width(position.width), GUILayout.Height(position.height)); { GUILayout.Space(5f); EditorGUILayout.LabelField("Environment Information", EditorStyles.boldLabel); EditorGUILayout.BeginVertical("box"); { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Product Name", GUILayout.Width(160f)); EditorGUILayout.LabelField(m_Controller.ProductName); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Company Name", GUILayout.Width(160f)); EditorGUILayout.LabelField(m_Controller.CompanyName); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Game Identifier", GUILayout.Width(160f)); EditorGUILayout.LabelField(m_Controller.GameIdentifier); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Applicable Game Version", GUILayout.Width(160f)); EditorGUILayout.LabelField(m_Controller.ApplicableGameVersion); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); GUILayout.Space(5f); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.BeginVertical(); { EditorGUILayout.LabelField("Build Target", EditorStyles.boldLabel); EditorGUILayout.BeginVertical("box"); { m_Controller.WindowsSelected = EditorGUILayout.ToggleLeft("Microsoft Windows", m_Controller.WindowsSelected); m_Controller.MacOSXSelected = EditorGUILayout.ToggleLeft("Apple Mac OS X", m_Controller.MacOSXSelected); m_Controller.IOSSelected = EditorGUILayout.ToggleLeft("Apple iPhone/iPad", m_Controller.IOSSelected); m_Controller.AndroidSelected = EditorGUILayout.ToggleLeft("Google Android", m_Controller.AndroidSelected); m_Controller.WindowsStoreSelected = EditorGUILayout.ToggleLeft("Microsoft Windows Store", m_Controller.WindowsStoreSelected); } EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); { m_Controller.RecordScatteredDependencyAssetsSelected = EditorGUILayout.ToggleLeft("Record Scattered Dependency Assets", m_Controller.RecordScatteredDependencyAssetsSelected); } EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); { EditorGUILayout.LabelField("AssetBundle Options", EditorStyles.boldLabel); EditorGUILayout.BeginVertical("box"); { bool uncompressedAssetBundleSelected = EditorGUILayout.ToggleLeft("Uncompressed AssetBundle", m_Controller.UncompressedAssetBundleSelected); if (m_Controller.UncompressedAssetBundleSelected != uncompressedAssetBundleSelected) { m_Controller.UncompressedAssetBundleSelected = uncompressedAssetBundleSelected; if (m_Controller.UncompressedAssetBundleSelected) { m_Controller.ChunkBasedCompressionSelected = false; } } bool disableWriteTypeTreeSelected = EditorGUILayout.ToggleLeft("Disable Write TypeTree", m_Controller.DisableWriteTypeTreeSelected); if (m_Controller.DisableWriteTypeTreeSelected != disableWriteTypeTreeSelected) { m_Controller.DisableWriteTypeTreeSelected = disableWriteTypeTreeSelected; if (m_Controller.DisableWriteTypeTreeSelected) { m_Controller.IgnoreTypeTreeChangesSelected = false; } } m_Controller.DeterministicAssetBundleSelected = EditorGUILayout.ToggleLeft("Deterministic AssetBundle", m_Controller.DeterministicAssetBundleSelected); m_Controller.ForceRebuildAssetBundleSelected = EditorGUILayout.ToggleLeft("Force Rebuild AssetBundle", m_Controller.ForceRebuildAssetBundleSelected); bool ignoreTypeTreeChangesSelected = EditorGUILayout.ToggleLeft("Ignore TypeTree Changes", m_Controller.IgnoreTypeTreeChangesSelected); if (m_Controller.IgnoreTypeTreeChangesSelected != ignoreTypeTreeChangesSelected) { m_Controller.IgnoreTypeTreeChangesSelected = ignoreTypeTreeChangesSelected; if (m_Controller.IgnoreTypeTreeChangesSelected) { m_Controller.DisableWriteTypeTreeSelected = false; } } EditorGUI.BeginDisabledGroup(true); { m_Controller.AppendHashToAssetBundleNameSelected = EditorGUILayout.ToggleLeft("Append Hash To AssetBundle Name", m_Controller.AppendHashToAssetBundleNameSelected); } EditorGUI.EndDisabledGroup(); bool chunkBasedCompressionSelected = EditorGUILayout.ToggleLeft("Chunk Based Compression", m_Controller.ChunkBasedCompressionSelected); if (m_Controller.ChunkBasedCompressionSelected != chunkBasedCompressionSelected) { m_Controller.ChunkBasedCompressionSelected = chunkBasedCompressionSelected; if (m_Controller.ChunkBasedCompressionSelected) { m_Controller.UncompressedAssetBundleSelected = false; } } bool isCopyStreamingAssets = EditorGUILayout.ToggleLeft("Copy StreamingAssets", m_Controller.IsCopyStreamingAssets); if (m_Controller.IsCopyStreamingAssets != isCopyStreamingAssets) { m_Controller.IsCopyStreamingAssets = isCopyStreamingAssets; } } EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); } EditorGUILayout.EndHorizontal(); string compressMessage = string.Empty; MessageType compressMessageType = MessageType.None; GetCompressMessage(out compressMessage, out compressMessageType); EditorGUILayout.HelpBox(compressMessage, compressMessageType); GUILayout.Space(5f); EditorGUILayout.LabelField("Build", EditorStyles.boldLabel); EditorGUILayout.BeginVertical("box"); { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Build Event Handler", GUILayout.Width(160f)); string[] names = m_Controller.GetBuildEventHandlerTypeNames(); int selectedIndex = EditorGUILayout.Popup(m_BuildEventHandlerTypeNameIndex, names); if (selectedIndex != m_BuildEventHandlerTypeNameIndex) { m_BuildEventHandlerTypeNameIndex = selectedIndex; m_Controller.BuildEventHandlerTypeName = (selectedIndex <= 0 ? string.Empty : names[selectedIndex]); if (m_Controller.RefreshBuildEventHandler()) { Debug.Log("Set build event success."); } else { Debug.LogWarning("Set build event failure."); } } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Internal Resource Version", GUILayout.Width(160f)); m_Controller.InternalResourceVersion = EditorGUILayout.IntField(m_Controller.InternalResourceVersion); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Resource Version", GUILayout.Width(160f)); GUILayout.Label(string.Format("{0} ({1})", m_Controller.ApplicableGameVersion, m_Controller.InternalResourceVersion.ToString())); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Min App Version", GUILayout.Width(160f)); m_Controller.MinAppVersion = EditorGUILayout.IntField(m_Controller.MinAppVersion); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Output Directory", GUILayout.Width(160f)); m_Controller.OutputDirectory = EditorGUILayout.TextField(m_Controller.OutputDirectory); if (GUILayout.Button("Browse...", GUILayout.Width(80f))) { BrowseOutputDirectory(); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Working Path", GUILayout.Width(160f)); GUILayout.Label(m_Controller.WorkingPath); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Output Package Path", GUILayout.Width(160f)); GUILayout.Label(m_Controller.OutputPackagePath); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Output Zip Path", GUILayout.Width(160f)); GUILayout.Label(m_Controller.OutputZipPath); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Build Report Path", GUILayout.Width(160f)); GUILayout.Label(m_Controller.BuildReportPath); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); string buildMessage = string.Empty; MessageType buildMessageType = MessageType.None; GetBuildMessage(out buildMessage, out buildMessageType); EditorGUILayout.HelpBox(buildMessage, buildMessageType); GUILayout.Space(2f); EditorGUILayout.BeginHorizontal(); { EditorGUI.BeginDisabledGroup(!m_Controller.IsValidOutputDirectory); { if (GUILayout.Button("Start Build AssetBundles")) { m_OrderBuildAssetBundles = true; } } EditorGUI.EndDisabledGroup(); if (GUILayout.Button("Save", GUILayout.Width(80f))) { SaveConfiguration(); } } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); }