Merge remote-tracking branch 'gitea/thr_dev/dev2'
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -26,6 +26,11 @@ namespace XericUIEditor
|
||||
|
||||
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
||||
{
|
||||
var nsProp = property.FindPropertyRelative("Namespace");
|
||||
var pathProp = property.FindPropertyRelative("StylePath");
|
||||
if (nsProp == null || pathProp == null)
|
||||
return LINE_HEIGHT + PADDING * 2;
|
||||
|
||||
string key = GetFoldKey(property);
|
||||
bool expanded = s_FoldoutStates.TryGetValue(key, out bool f) && f;
|
||||
|
||||
@@ -37,7 +42,7 @@ namespace XericUIEditor
|
||||
|
||||
// 有值才显示值类型行
|
||||
string ns = GetNamespace(property);
|
||||
string path = property.FindPropertyRelative("StylePath").stringValue;
|
||||
string path = pathProp.stringValue;
|
||||
StyleValue val = StyleManager.GetValue(ns, path);
|
||||
if (val != null && val.ValueType != null)
|
||||
rowCount++;
|
||||
@@ -59,6 +64,12 @@ namespace XericUIEditor
|
||||
SerializedProperty nsProp = property.FindPropertyRelative("Namespace");
|
||||
SerializedProperty pathProp = property.FindPropertyRelative("StylePath");
|
||||
|
||||
if (nsProp == null || pathProp == null)
|
||||
{
|
||||
EditorGUI.LabelField(position, label, "(StyleField 未初始化)");
|
||||
return;
|
||||
}
|
||||
|
||||
// === 标题行:折叠箭头 + 标签 + 路径下拉 ===
|
||||
Rect headerRect = new Rect(position.x, position.y + PADDING, position.width, LINE_HEIGHT);
|
||||
|
||||
@@ -213,7 +224,8 @@ namespace XericUIEditor
|
||||
|
||||
private static string GetNamespace(SerializedProperty property)
|
||||
{
|
||||
string ns = property.FindPropertyRelative("Namespace").stringValue;
|
||||
var nsProp = property.FindPropertyRelative("Namespace");
|
||||
string ns = nsProp?.stringValue;
|
||||
return string.IsNullOrEmpty(ns) ? "default" : ns;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
using UnityEditor;
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
using XericLibrary.Runtime.MacroLibrary;
|
||||
using XericUI.XTable.Rendering.Component;
|
||||
|
||||
namespace XericUIEditor.XTable
|
||||
@@ -47,10 +47,10 @@ namespace XericUIEditor.XTable
|
||||
GameObject selected = Selection.activeGameObject;
|
||||
if (selected == null) return;
|
||||
|
||||
XericUIActionTable table = selected.GetComponent<XericUIActionTable>();
|
||||
var table = selected.GetComponent<XericUIActionTable>();
|
||||
if (table == null) return;
|
||||
|
||||
RectTransform rect = table.GetComponent<RectTransform>();
|
||||
var rect = table.RectTransform();
|
||||
if (rect == null) return;
|
||||
|
||||
DrawGridOverlay(table, rect);
|
||||
|
||||
@@ -10,4 +10,20 @@ namespace: default
|
||||
.PressedColor = (0.78,0.78,0.78,1)
|
||||
.SelectedColor = (0.96,0.96,0.96,1)
|
||||
.DisabledColor = (0.6,0.6,0.6,0.8)
|
||||
}
|
||||
|
||||
/toggle/TargetGraphic/ColorTint:UnityEngine.UI.ColorBlock/ {
|
||||
.NormalColor = (1,1,1,1)
|
||||
.HighlightedColor = (0.96,0.96,0.96,1)
|
||||
.PressedColor = (0.78,0.78,0.78,1)
|
||||
.SelectedColor = (0.96,0.96,0.96,1)
|
||||
.DisabledColor = (0.6,0.6,0.6,0.8)
|
||||
}
|
||||
|
||||
/image/ColorTint:UnityEngine.UI.ColorBlock/ {
|
||||
.NormalColor = (1,1,1,1)
|
||||
.HighlightedColor = (0.96,0.96,0.96,1)
|
||||
.PressedColor = (0.78,0.78,0.78,1)
|
||||
.SelectedColor = (0.96,0.96,0.96,1)
|
||||
.DisabledColor = (0.6,0.6,0.6,0.8)
|
||||
}
|
||||
@@ -96,6 +96,8 @@ namespace XericUI.XTable.Rendering.Component
|
||||
}
|
||||
}
|
||||
|
||||
public XTableCellData this[int row, int col] => TableData.GetOrCreateCell(row, col);
|
||||
|
||||
public float[] RowHeights => m_RowHeights;
|
||||
public float[] ColWidths => m_ColWidths;
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"displayName":"Example Sample",
|
||||
"description": "Replace this string with your own description of the sample. Delete the Samples folder if not needed.",
|
||||
"createSeparatePackage": false
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
//
|
||||
// Use this sample example C# file to develop samples to guide usage of APIs
|
||||
// in your package.
|
||||
//
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
namespace Lrss3.Xericuiactionvessel
|
||||
{
|
||||
/// <summary>
|
||||
/// Provide a general description of the public class.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Packages require XmlDoc documentation for ALL Package APIs.
|
||||
/// https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/xmldoc/xml-documentation-comments
|
||||
/// </remarks>
|
||||
public class MyPublicSampleExampleClass
|
||||
{
|
||||
/// <summary>
|
||||
/// Provide a description of what this public method does.
|
||||
/// </summary>
|
||||
public void CountThingsAndDoStuffAndOutputIt()
|
||||
{
|
||||
var result = new MyPublicRuntimeExampleClass().CountThingsAndDoStuff(1, 2, false);
|
||||
Debug.Log("Call CountThingsAndDoStuffAndOutputIt returns " + result);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user