public override void OnGUI(string searchContext) { base.OnGUI(searchContext); LightmapAttachSetting setting = LightmapAttachSetting.GetInstance(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("保存")) { LightmapAttachSetting.GetInstance().Save(); m_ExporterFileNameTypeChanged = false; } EditorGUILayout.EndHorizontal(); setting.ExporterFolder = (EGLUtility.Folder("导出设置保存目录", setting.ExporterFolder)); if (m_ExporterFileNameTypeChanged) { EditorGUILayout.HelpBox("修改这项设置,会导致之前的导出设置丢失场景的索引。" , MessageType.Warning); } if (EGLUtility.EnumPopup(out setting.ExporterFileNameType , "导出设置文件名" , setting.ExporterFileNameType)) { m_ExporterFileNameTypeChanged = true; } }
public override void OnGUI(string searchContext) { base.OnGUI(searchContext); AssetVersionSetting setting = AssetVersionSetting.GetInstance(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("保存")) { setting.Save(); } if (GUILayout.Button("生成资源版本文件")) { AssetVersionBuilder.GenerateAssetVersionFile(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); if (EGLUtility.Folder(out setting.AssetVersionFilePath , "资源版本文件路径" , setting.AssetVersionFilePath)) { m_FormatedVersionFilePath = setting.GetFormatedAssetVersionFilePath(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("资源版本文件路径", m_FormatedVersionFilePath); if (GUILayout.Button("打开", GUILayout.Width(36))) { EditorUtility.RevealInFinder(m_FormatedVersionFilePath); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); }
public override void OnGUI() { OnGUI_Base(); EditorGUILayout.HelpBox("可用的Format标记有:\n" + "{Application.dataPath}\n" + "{DateTime.Now}" , MessageType.Info); if (EGLUtility.Folder(out ReportDirectory, "报告目录", ReportDirectory)) { m_ReportDirectoryFormated = FormatReportDirectory(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Format报告目录", m_ReportDirectoryFormated); if (GUILayout.Button("打开", GUILayout.Width(32))) { DirectoryInfo directory = new DirectoryInfo(m_ReportDirectoryFormated); while (!Directory.Exists(directory.FullName)) { if (directory.Parent != null) { directory = directory.Parent; break; } } if (Directory.Exists(directory.FullName)) { EditorUtility.RevealInFinder(directory.FullName); } } EditorGUILayout.EndHorizontal(); }
public override void OnGUI() { ExportLightmapDataPath = (EGLUtility.File("Lightmap导出路径", ExportLightmapDataPath)); ExportRendererDataPath = (EGLUtility.File("Renderer导出路径", ExportRendererDataPath)); if (EGLUtility.ObjectField(out m_Target, "导出目标", m_Target, true)) { TargetPath = GF.Common.Utility.ObjectUtility.CalculateTransformPath(m_Target.transform); } EditorGUILayout.LabelField("导出目标的LocalID", TargetPath); IncludeDeactive = EditorGUILayout.Toggle("是否包含隐藏物体", IncludeDeactive); }
public override void OnGUI(string searchContext) { base.OnGUI(searchContext); OpenAssetSetting.s_EnableCustomTextEditor.Set(EGLUtility.Toggle("使用自定义文本编辑器" , OpenAssetSetting.s_EnableCustomTextEditor)); if (OpenAssetSetting.s_EnableCustomTextEditor) { DoGUI_TextEditor(OpenAssetSetting.s_LuaEditor, "Lua"); DoGUI_TextEditor(OpenAssetSetting.s_CSharpEditor, "CSharp"); DoGUI_TextEditor(OpenAssetSetting.s_DefaultEditor, "其他文本"); } }
public override void OnGUI(string searchContext) { base.OnGUI(searchContext); XLuaSetting setting = XLuaSetting.GetInstance(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("保存")) { XLuaSetting.GetInstance().Save(); } if (GUILayout.Button("重新导入所有Lua脚本")) { LuaScriptPostprocessor.ReimportAllLuaScript(); } EditorGUILayout.EndHorizontal(); setting.ExportedLuaRoot = (EGLUtility.Folder("Lua的导出目录", setting.ExportedLuaRoot)); }
public override void OnInspectorGUI() { serializedObject.Update(); m_Rule._OnInspectorGUI(); m_Rule.RootPath = EGLUtility.Folder("目录", m_Rule.RootPath); m_Rule.AssetCollectionFoldout = EditorGUILayout.Foldout(m_Rule.AssetCollectionFoldout, "收集资源"); if (m_Rule.AssetCollectionFoldout) { EditorGUI.indentLevel++; OnInspectorGUI_AssetCollection(); EditorGUI.indentLevel--; } EditorGUILayout.Space(); m_Rule.AssetFilterFoldout = EditorGUILayout.Foldout(m_Rule.AssetFilterFoldout, "筛选资源"); if (m_Rule.AssetFilterFoldout) { EditorGUI.indentLevel++; OnInspectorGUI_AssetFilter(); EditorGUI.indentLevel--; } EditorGUILayout.Space(); m_Rule.BundleNameAndAssetKeyFoldout = EditorGUILayout.Foldout(m_Rule.BundleNameAndAssetKeyFoldout, "BundleName & AssetKey"); if (m_Rule.BundleNameAndAssetKeyFoldout) { EditorGUI.indentLevel++; OnInspectorGUI_BundleNameAndAssetKey(); EditorGUI.indentLevel--; } EditorGUILayout.Space(); GUI.enabled = true; if (GUI.changed) { serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty(target); } }
private void OnGUI_PreprocessShaders() { ShaderToolsSetting setting = ShaderToolsSetting.GetInstance(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("添加Shader处理")) { m_PreprocessShadersForGUIs.Add(new PreprocessShadersForGUI()); } if (GUILayout.Button("打包后")) { PreprocessShadersUtility.OnAfter(); } EditorGUILayout.EndHorizontal(); for (int iPreprocessShaders = 0; iPreprocessShaders < m_PreprocessShadersForGUIs.Count; iPreprocessShaders++) { PreprocessShadersForGUI iterPreprocessShadersForGUI = m_PreprocessShadersForGUIs[iPreprocessShaders]; EditorGUILayout.BeginHorizontal(); if (EGLUtility.ObjectField(out iterPreprocessShadersForGUI.Script, "处理脚本", iterPreprocessShadersForGUI.Script, true)) { if (iterPreprocessShadersForGUI.Script != null) { TryGenerateSetting(iPreprocessShaders, iterPreprocessShadersForGUI); } } if (GUILayout.Button("X", GUILayout.Width(32))) { m_PreprocessShadersForGUIs.RemoveAt(iPreprocessShaders); iPreprocessShaders--; continue; } EditorGUILayout.EndHorizontal(); if (iterPreprocessShadersForGUI.Setting != null) { iterPreprocessShadersForGUI.Setting.OnGUI(); } EditorGUILayout.Space(); } }
private void DoGUI_TextEditor(OpenAssetSetting.TextEditor textEditor, string label) { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); textEditor.Foldout.Set(EditorGUILayout.Foldout(textEditor.Foldout, label)); EditorGUILayout.EndHorizontal(); if (!textEditor.Foldout) { return; } EditorGUI.indentLevel++; EditorGUILayout.BeginHorizontal(); textEditor.Path.Set(EditorGUILayout.DelayedTextField(label, textEditor.Path)); if (GUILayout.Button("使用当前编辑器", GUILayout.Width(100))) { textEditor.Path.Set(UnityEditorInternal.ScriptEditorUtility.GetExternalScriptEditor()); } EditorGUILayout.EndHorizontal(); textEditor.ChangeSetting.Set(EGLUtility.Toggle("更改Unity设置", textEditor.ChangeSetting)); if (!textEditor.ChangeSetting) { textEditor.Arguments.Set(EditorGUILayout.DelayedTextField("启动参数", textEditor.Arguments)); } EditorGUI.indentLevel--; }
public override void OnInspectorGUI() { serializedObject.Update(); m_Rule._OnInspectorGUI(); m_Rule.BundleName = EditorGUILayout.TextField("Bundle名字", m_Rule.BundleName).ToLower(); EditorGUILayout.Space(); EditorGUILayout.HelpBox("可以没有Shaders\n" + "用途:方便查看用到的Shader\n" + "\t在Shaders上扩展功能来收集分析Shader\n" + "用法:\n" + "\t1. 写一个继承自IShaders的类\n" + "\t2. 创建这个类的Asset,拖到下方" , MessageType.Info); EditorGUILayout.PropertyField(serializedObject.FindProperty("Shaders") , EditorGUIUtility.TrTextContent("Shaders") , true); EditorGUILayout.Space(); m_Rule.AutoGenerateShaderVariantCollection = EditorGUILayout.Toggle("自动生成变体集" , m_Rule.AutoGenerateShaderVariantCollection); if (m_Rule.AutoGenerateShaderVariantCollection) { m_Rule.AutoGenerateShaderVariantCollectionPath = EGLUtility.AssetPath <ShaderVariantCollection>("自动变体集路径" , m_Rule.AutoGenerateShaderVariantCollectionPath); } m_Rule.CustomShaderVariantCollectionPathsFoldout = EditorGUILayout.Foldout(m_Rule.CustomShaderVariantCollectionPathsFoldout , "自定义变体集"); if (m_Rule.CustomShaderVariantCollectionPathsFoldout) { EditorGUI.indentLevel++; int oldCount = m_Rule.CustomShaderVariantCollectionPaths == null ? 0 : m_Rule.CustomShaderVariantCollectionPaths.Length; int count = EditorGUILayout.DelayedIntField("数量", oldCount); if (count != oldCount) { string[] customShaderVariantCollectionPaths = new string[count]; count = Mathf.Min(count, oldCount); for (int iShader = 0; iShader < count; iShader++) { customShaderVariantCollectionPaths[iShader] = m_Rule.CustomShaderVariantCollectionPaths[iShader]; } m_Rule.CustomShaderVariantCollectionPaths = customShaderVariantCollectionPaths; } count = m_Rule.CustomShaderVariantCollectionPaths == null ? 0 : m_Rule.CustomShaderVariantCollectionPaths.Length; for (int iShader = 0; iShader < count; iShader++) { m_Rule.CustomShaderVariantCollectionPaths[iShader] = EGLUtility.AssetPath <ShaderVariantCollection>("自定义变体集路径" , m_Rule.CustomShaderVariantCollectionPaths[iShader]); } EditorGUI.indentLevel--; } GUI.enabled = true; if (GUI.changed) { serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty(target); } }
protected void OnGUI() { if (Application.isPlaying) { EditorGUILayout.HelpBox("只能在编辑器下使用" , MessageType.Warning); return; } if (!m_ActiveScene.IsValid()) { EditorGUILayout.HelpBox("需要先打开一个场景" , MessageType.Warning); return; } if (string.IsNullOrEmpty(m_ActiveScene.path)) { EditorGUILayout.HelpBox("只有保存到文件的场景才能使用此功能" , MessageType.Warning); return; } EditorGUILayout.LabelField("当前的场景", m_ActiveScene.path); EditorGUILayout.BeginHorizontal(); if (EGLUtility.ObjectField(out m_ExporterScript, "导出设置", m_ExporterScript, false)) { if (!m_ExporterScript.GetClass().IsSubclassOf(typeof(BaseExporter))) { m_ExporterScript = null; } } if (m_ExporterScript != null && GUILayout.Button("重新创建设置", GUILayout.Width(100))) { m_Exporter?.OnRelease(); string exporterPath = ExportUtility.GetExporterPath(m_ActiveScene); m_Exporter = CreateInstance(m_ExporterScript.GetClass()) as BaseExporter; if (m_Exporter) { m_Exporter.OnInitialize(); AssetDatabase.CreateAsset(m_Exporter, exporterPath); } } EditorGUILayout.EndHorizontal(); if (m_Exporter) { EditorGUILayout.Space(); EditorGUILayout.Space(); if (GUILayout.Button("导出")) { if (m_Exporter.CanExport(out string errorMessage)) { try { m_Exporter.Export(m_ActiveScene); EditorUtility.DisplayDialog("LightmapAttach", "导出完成", "Ok"); } catch (Exception e) { MDebug.LogError("Renderer", "导出Lightmap失败,Exception:\n" + e.ToString()); EditorUtility.DisplayDialog("LightmapAttach", "导出失败:\n" + e.ToString(), "Ok"); MDebug.LogError("Renderer", "导出Lightmap失败,Exception:\n" + e.ToString()); } finally { EditorUtility.ClearProgressBar(); } } else { MDebug.LogError("Renderer", "不能导出Lightmap:\n" + errorMessage); EditorUtility.DisplayDialog("LightmapAttach" , "不能导出:\n" + errorMessage , "OK"); } } EditorGUI.BeginChangeCheck(); m_Exporter.OnGUI(); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(m_Exporter); } } }
public override void OnGUI(string searchContext) { base.OnGUI(searchContext); BuildSetting setting = BuildSetting.GetInstance(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("保存")) { BuildSetting.GetInstance().Save(); } if (GUILayout.Button("清除BundleName")) { Builder.ClearAllBundleName(); } if (GUILayout.Button("打包")) { BuildSetting.GetInstance().Save(); Builder.Build(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.HelpBox("打包目录和BundleName路径支持Format: \n" + "\t{Application.dataPath}\n" + "\t{BuildTarget}" , MessageType.Info); if (EGLUtility.Folder(out setting.BuildOutput , "打包目录" , setting.BuildOutput)) { m_FormatedBuildOutput = BuildSetting.GetInstance().GetFormatedBuildOutput(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("打包目录", m_FormatedBuildOutput); if (GUILayout.Button("打开", GUILayout.Width(36))) { EditorUtility.RevealInFinder(m_FormatedBuildOutput); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); if (EGLUtility.Folder(out setting.BundleBuildsPath , "BundleName路径" , setting.BundleBuildsPath)) { m_FormatedBundleBuildsPath = BuildSetting.GetInstance().GetFormatedBundleBuildsPath(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("BundleName路径", m_FormatedBundleBuildsPath); if (GUILayout.Button("打开", GUILayout.Width(36))) { EditorUtility.RevealInFinder(m_FormatedBundleBuildsPath); EditorUtility.OpenWithDefaultApp(m_FormatedBundleBuildsPath); } EditorGUILayout.EndHorizontal(); if (EGLUtility.Folder(out setting.BundleInfoPath , "BundleInfo路径" , setting.BundleInfoPath)) { m_FormatedBundleInfoPath = BuildSetting.GetInstance().GetFormatedBundleInfoPath(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("BundleInfo路径", m_FormatedBundleInfoPath); if (GUILayout.Button("打开", GUILayout.Width(36))) { EditorUtility.RevealInFinder(m_FormatedBundleInfoPath); EditorUtility.OpenWithDefaultApp(m_FormatedBundleInfoPath); } EditorGUILayout.EndHorizontal(); EditorGUILayout.HelpBox("开启这个选项可以加快打包速度\n" + "如果本地有之前缓存的BundleName文件就不在打包前执行打包规则\n" + "当需要打包的资源有增加或移除,则不应开启这个选项" , MessageType.Info); setting.UseCachedBuild = EditorGUILayout.Toggle("使用缓存的BundleName", setting.UseCachedBuild); EditorGUILayout.Space(); EditorGUILayout.HelpBox("关闭这个选项可以加快打包速度\n" + "但是有些插件和调试工具必须设置BundleName才能使用\n\n" + "例如AssetBundleBrowser\n" + "可以通过这个工具设置BundleName,但是不勾选打包AB的选项。然后通过AssetBundleBrowser打包" , MessageType.Info); setting.ResetBundleName = EditorGUILayout.Toggle("设置BundleName", setting.ResetBundleName); EditorGUILayout.Space(); if (EGLUtility.Folder(out setting.AssetInfosPath , "AssetInfos路径" , setting.AssetInfosPath)) { m_FormatedAssetInfosPath = BuildSetting.GetInstance().GetFormateAssetInfosPath(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("AssetInfos路径", m_FormatedAssetInfosPath); if (GUILayout.Button("打开", GUILayout.Width(36))) { EditorUtility.RevealInFinder(m_FormatedAssetInfosPath); EditorUtility.OpenWithDefaultApp(m_FormatedAssetInfosPath); } EditorGUILayout.EndHorizontal(); if (EGLUtility.Folder(out setting.AssetKeyEnumFilePath , "AssetKeyEnum路径" , setting.AssetKeyEnumFilePath)) { m_FormatedAssetKeyEnumFilePath = BuildSetting.GetInstance().GetFormateAssetKeyEnumFilePath(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("AssetKeyEnum路径", m_FormatedAssetKeyEnumFilePath); if (GUILayout.Button("打开", GUILayout.Width(36))) { EditorUtility.RevealInFinder(m_FormatedAssetKeyEnumFilePath); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); setting.BuildAssetBundleOptions = (BuildAssetBundleOptions)EditorGUILayout.EnumFlagsField("打包选项", setting.BuildAssetBundleOptions); setting.BuildAssetBuild = EditorGUILayout.Toggle("打包AB", setting.BuildAssetBuild); setting.DeleteOutputBeforeBuild = EditorGUILayout.Toggle("打包前删除上次的AB", setting.DeleteOutputBeforeBuild); }