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();
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
        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--;
 }
Exemplo n.º 10
0
        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);
            }
        }
Exemplo n.º 11
0
        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);
        }