87 lines
3.7 KiB
C#
87 lines
3.7 KiB
C#
using System.Collections.Generic;
|
|
using Newtonsoft.Json;
|
|
using Sirenix.OdinInspector;
|
|
using Sirenix.OdinInspector.Editor;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace AlicizaX.UI.Editor
|
|
{
|
|
public class UISettingEditorWindow : OdinEditorWindow
|
|
{
|
|
[MenuItem("Tools/AlicizaX/UI Setting Window")]
|
|
private static void OpenWindow()
|
|
{
|
|
GetWindow<UISettingEditorWindow>().Show();
|
|
}
|
|
|
|
|
|
protected override void Initialize()
|
|
{
|
|
uiGenerateConfiguration = UIGenerateConfiguration.Instance;
|
|
UIGenerateCommonData = uiGenerateConfiguration.UIGenerateCommonData;
|
|
UIScriptGenerateConfigs = uiGenerateConfiguration.UIScriptGenerateConfigs;
|
|
UIElementRegexConfigs = uiGenerateConfiguration.UIElementRegexConfigs;
|
|
RefreshLabel();
|
|
}
|
|
|
|
// [Required] [InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)] [DisableInPlayMode] [HideLabel]
|
|
private UIGenerateConfiguration uiGenerateConfiguration;
|
|
|
|
[Required] [DisableInPlayMode] [HideLabel] [TabGroup("UI基础设置")] [SerializeField]
|
|
public UIGenerateCommonData UIGenerateCommonData;
|
|
|
|
[TabGroup("UI基础设置")] [LabelText("脚本生成预览")] [ShowInInspector] [ReadOnly] [OnValueChanged("RefreshLabel")]
|
|
private string previewLabel;
|
|
|
|
[TabGroup("UI基础设置")] [LabelText("组件生成预览")] [ShowInInspector] [ReadOnly] [OnValueChanged("RefreshLabel")] [SuffixLabel("(下标0开始)")]
|
|
private string previewCompLabel;
|
|
|
|
[Required] [DisableInPlayMode] [HideLabel] [TabGroup("UI构建配置")] [SerializeField] [TableList(ShowIndexLabels = false, DrawScrollView = true, AlwaysExpanded = true)]
|
|
public List<UIScriptGenerateData> UIScriptGenerateConfigs;
|
|
|
|
|
|
[Required] [DisableInPlayMode] [HideLabel] [TabGroup("UI元素映射")] [SerializeField] [TableList(ShowIndexLabels = false, DrawScrollView = true, AlwaysExpanded = true)]
|
|
public List<UIEelementRegexData> UIElementRegexConfigs;
|
|
|
|
private void RefreshLabel()
|
|
{
|
|
previewLabel = $"{UIGenerateCommonData.GeneratePrefix}_UITestWindow";
|
|
previewCompLabel = $"{UIGenerateCommonData.ArrayComSplitName}Text{UIGenerateCommonData.ComCheckSplitName}Img" +
|
|
$"{UIGenerateCommonData.ComCheckEndName}Test{UIGenerateCommonData.ArrayComSplitName}0";
|
|
}
|
|
|
|
[TabGroup("UI元素映射")]
|
|
[Sirenix.OdinInspector.Button("加载默认")]
|
|
private void LoadDefaultConfig()
|
|
{
|
|
const string Path = "Packages/com.alicizax.unity.ui/Editor/Res/default.txt";
|
|
string text = System.IO.File.ReadAllText(Path);
|
|
UIElementRegexConfigs = JsonConvert.DeserializeObject<List<UIEelementRegexData>>(text);
|
|
}
|
|
|
|
|
|
protected override void OnDisable()
|
|
{
|
|
base.OnDisable();
|
|
uiGenerateConfiguration.UIGenerateCommonData = UIGenerateCommonData;
|
|
uiGenerateConfiguration.UIScriptGenerateConfigs = UIScriptGenerateConfigs;
|
|
uiGenerateConfiguration.UIElementRegexConfigs = UIElementRegexConfigs;
|
|
EditorUtility.SetDirty(uiGenerateConfiguration);
|
|
AssetDatabase.SaveAssets();
|
|
UIGenerateConfiguration.Save();
|
|
}
|
|
|
|
protected override void OnDestroy()
|
|
{
|
|
base.OnDestroy();
|
|
uiGenerateConfiguration.UIGenerateCommonData = UIGenerateCommonData;
|
|
uiGenerateConfiguration.UIScriptGenerateConfigs = UIScriptGenerateConfigs;
|
|
uiGenerateConfiguration.UIElementRegexConfigs = UIElementRegexConfigs;
|
|
EditorUtility.SetDirty(uiGenerateConfiguration);
|
|
AssetDatabase.SaveAssets();
|
|
UIGenerateConfiguration.Save();
|
|
}
|
|
}
|
|
}
|