添加一些快捷用法。

This commit is contained in:
2026-06-29 19:29:42 +08:00
parent b7963afe30
commit 0cc1a89b4d
3 changed files with 71 additions and 14 deletions
+55 -12
View File
@@ -1,3 +1,4 @@
using UnityEngine;
using UnityEditor;
using UnityEditor.UI;
@@ -6,8 +7,9 @@ using XericUI.OverrideUI;
namespace XericUIEditor.OverrideUI
{
/// <summary>
/// XericStyleImage 的 Inspector 编辑器——继承 GraphicEditor,
/// 额外展示颜色、纹理、材质三个 StyleField 和自动刷新开关。
/// XericStyleImage 的 Inspector 编辑器——
/// 仅显示颜色样式字段 + raycastTarget / raycastPadding / maskable。
/// 不展示原始 Color/Sprite/Material(被样式表接管)。
/// </summary>
[CustomEditor(typeof(XericStyleImage), true)]
[CanEditMultipleObjects]
@@ -16,30 +18,71 @@ namespace XericUIEditor.OverrideUI
private SerializedProperty m_ColorStyleProp;
private SerializedProperty m_TextureStyleProp;
private SerializedProperty m_MaterialStyleProp;
private SerializedProperty m_AutoRefreshProp;
private SerializedProperty m_RaycastTargetProp;
private SerializedProperty m_RaycastPaddingProp;
private SerializedProperty m_MaskableProp;
private SerializedProperty m_ColorProp;
// 折叠状态
private static bool s_ColorFoldout = false;
private static bool s_TextureFoldout = false;
private static bool s_MaterialFoldout = false;
protected override void OnEnable()
{
base.OnEnable();
m_ColorStyleProp = serializedObject.FindProperty("m_ColorStyle");
m_ColorStyleProp = serializedObject.FindProperty("m_ColorStyle");
m_TextureStyleProp = serializedObject.FindProperty("m_TextureStyle");
m_MaterialStyleProp = serializedObject.FindProperty("m_MaterialStyle");
m_AutoRefreshProp = serializedObject.FindProperty("m_AutoRefresh");
m_RaycastTargetProp = serializedObject.FindProperty("m_RaycastTarget");
m_RaycastPaddingProp = serializedObject.FindProperty("m_RaycastPadding");
m_MaskableProp = serializedObject.FindProperty("m_Maskable");
m_ColorProp = serializedObject.FindProperty("m_Color");
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
EditorGUILayout.Space();
serializedObject.Update();
// === 颜色样式(主要展示) ===
EditorGUILayout.LabelField("样式表配置", EditorStyles.boldLabel);
EditorGUILayout.PropertyField(m_ColorStyleProp);
EditorGUILayout.PropertyField(m_TextureStyleProp);
EditorGUILayout.PropertyField(m_MaterialStyleProp);
EditorGUILayout.PropertyField(m_AutoRefreshProp);
EditorGUILayout.Space(2);
if (m_ColorStyleProp != null)
EditorGUILayout.PropertyField(m_ColorStyleProp, new GUIContent("颜色样式"));
// 纹理和材质样式折叠(通常不需要改动)
s_TextureFoldout = EditorGUILayout.Foldout(s_TextureFoldout, "纹理 / 材质样式(高级)", true);
if (s_TextureFoldout)
{
EditorGUI.indentLevel++;
if (m_TextureStyleProp != null)
EditorGUILayout.PropertyField(m_TextureStyleProp, new GUIContent("纹理样式"));
if (m_MaterialStyleProp != null)
EditorGUILayout.PropertyField(m_MaterialStyleProp, new GUIContent("材质样式"));
EditorGUI.indentLevel--;
}
EditorGUILayout.Space(8);
// === 颜色预览(只读) ===
if (m_ColorProp != null)
{
EditorGUI.BeginDisabledGroup(true);
EditorGUILayout.PropertyField(m_ColorProp, new GUIContent("颜色(预览)"));
EditorGUI.EndDisabledGroup();
}
EditorGUILayout.Space(4);
// === Raycast 与 Mask ===
EditorGUILayout.LabelField("交互", EditorStyles.boldLabel);
if (m_RaycastTargetProp != null)
EditorGUILayout.PropertyField(m_RaycastTargetProp, new GUIContent("Raycast Target"));
if (m_RaycastPaddingProp != null)
EditorGUILayout.PropertyField(m_RaycastPaddingProp, new GUIContent("Raycast Padding"));
if (m_MaskableProp != null)
EditorGUILayout.PropertyField(m_MaskableProp, new GUIContent("Maskable"));
serializedObject.ApplyModifiedProperties();
}