static protected void OnPostHeaderGUI(Editor editor) { var settings = AddressableAssetSettings.GetDefault(); var path = AssetDatabase.GetAssetOrScenePath(editor.target); if (!ValidatePath(path)) { return; } var guidStr = AssetDatabase.AssetPathToGUID(path); if (string.IsNullOrEmpty(guidStr)) { return; } var guid = new GUID(guidStr); var entry = settings.GetEntry(guid); GUILayout.BeginHorizontal(); //Undo.RegisterCompleteObjectUndo(settings, "AddressableAssetSettings"); if (GUILayout.Toggle(entry.active, addressableAssetToggleText, GUILayout.Width(120))) { if (!entry.active) { SetEntryWithUndo(settings, entry = new AddressableAssetEntry(guid, entry.address, true, entry.flags)); } } else { if (entry.active) { SetEntryWithUndo(settings, entry = new AddressableAssetEntry(guid, entry.address, false, entry.flags)); } } if (entry.active) { var displayAddress = string.IsNullOrEmpty(entry.address) ? AssetDatabase.GUIDToAssetPath(guidStr) : entry.address; var address = EditorGUILayout.DelayedTextField("", displayAddress); if (address != displayAddress) { SetEntryWithUndo(settings, new AddressableAssetEntry(entry.guid, address == AssetDatabase.GUIDToAssetPath(guidStr) ? string.Empty : address, entry.active, entry.flags)); } var flags = (AddressableAssetEntryFlags)EditorGUILayout.EnumMaskField("Flags", (AddressableAssetEntryFlags)entry.flags); if (flags != (AddressableAssetEntryFlags)entry.flags) { SetEntryWithUndo(settings, new AddressableAssetEntry(entry.guid, entry.address, entry.active, (int)flags)); } } GUILayout.EndHorizontal(); }
public static void BuildAssetBundles() { var outputPath = bundleBuildPath; if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } var results = CompileScripts(); var settings = new BuildSettings(); settings.target = EditorUserBuildSettings.activeBuildTarget; settings.group = EditorUserBuildSettings.selectedBuildTargetGroup; settings.typeDB = results.typeDB; settings.outputFolder = outputPath; SetupAssetVariantMapsAsset(); var input = BuildInterface.GenerateBuildInput(); BuildInput addressableInput; AddressableAssetSettings.GetDefault().GenerateBuildInput(out addressableInput); //input = addressableInput.Merge(input); BuildCommandSet commands; if (AssetBundleBuildPipeline.GenerateCommandSet(settings, input, out commands)) { BuildOutput output; if (AssetBundleBuildPipeline.ExecuteCommandSet(settings, commands, out output)) { var bundlesToCopy = new List <string>(output.results.Select(x => x.assetBundleName)); CopyBundlesToStreamingAssets(bundlesToCopy); CreateContentCatalog(commands); } } }