完善反射菜单
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
|
||||
namespace XericUI.ReflectionUIGenerator
|
||||
{
|
||||
/// <summary>
|
||||
/// 字段编组特性
|
||||
/// 将多个字段标记为属于同一个 Entry,共享一个 UI 组件实例
|
||||
///
|
||||
/// 使用示例:
|
||||
/// [XuiavrgFieldEntryGroup("field1", XuiavrgFieldTag.Label)] public string fieldLabel = "速度";
|
||||
/// [XuiavrgFieldEntryGroup("field1", XuiavrgFieldTag.Context)] public float fieldValue = 0.1f;
|
||||
/// [XuiavrgFieldEntryGroup("field1", XuiavrgFieldTag.Unit)] public string fieldUnit = "m/s";
|
||||
///
|
||||
/// 上述三个字段将合并为一个 Entry,分别绑定到 UI 组件上 Label、Context、Unit 三个子元素
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
|
||||
public class XuiavrgFieldEntryGroupAttribute : Attribute, IXuiavrgAttribute
|
||||
{
|
||||
/// <summary>编组路径,以 "/" 分割层级。同一 groupPath 的字段合并到一个 Entry</summary>
|
||||
public readonly string GroupPath;
|
||||
|
||||
/// <summary>该字段在编组 Entry 中的功能标记</summary>
|
||||
public readonly XuiavrgFieldTag Tag;
|
||||
|
||||
/// <summary>同一 Tag 存在多个时的索引区分</summary>
|
||||
public readonly int TagIndex;
|
||||
|
||||
/// <summary>
|
||||
/// 创建字段编组标记
|
||||
/// </summary>
|
||||
/// <param name="groupPath">编组路径 (如 "field1" 或 "field1/child")</param>
|
||||
/// <param name="tag">功能标记</param>
|
||||
/// <param name="tagIndex">标记索引 (同一 Tag 存在多个时区分)</param>
|
||||
public XuiavrgFieldEntryGroupAttribute(string groupPath, XuiavrgFieldTag tag, int tagIndex = 0)
|
||||
{
|
||||
GroupPath = groupPath;
|
||||
Tag = tag;
|
||||
TagIndex = tagIndex;
|
||||
}
|
||||
|
||||
public void BindProperty(XuiavrgInspectorProperty property)
|
||||
{
|
||||
// 新的 Entry 体系通过 Manager.BuildEntries 直接处理此 Attribute
|
||||
// 保留 IXuiavrgAttribute 兼容旧的 SchemaHydration 流程
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9de8a9119b60f0642a0fd446d791dc9d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
|
||||
namespace XericUI.ReflectionUIGenerator
|
||||
{
|
||||
/// <summary>
|
||||
/// 字段排序特性
|
||||
/// 控制 Entry 在界面中的显示顺序,替代原有 XuiavrgAttribute.InspectorOrder
|
||||
///
|
||||
/// 使用示例:
|
||||
/// [XuiavrgFieldOrder(5)] public string someField;
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
|
||||
public class XuiavrgFieldOrderAttribute : Attribute, IXuiavrgAttribute
|
||||
{
|
||||
/// <summary>排序值,值越小越靠前。0 表示使用默认发现顺序</summary>
|
||||
public readonly int Order;
|
||||
|
||||
/// <summary>
|
||||
/// 创建排序标记
|
||||
/// </summary>
|
||||
/// <param name="order">排序值</param>
|
||||
public XuiavrgFieldOrderAttribute(int order)
|
||||
{
|
||||
Order = order;
|
||||
}
|
||||
|
||||
public void BindProperty(XuiavrgInspectorProperty property)
|
||||
{
|
||||
property.inspectorOrder = Order;
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d18234607f666c4ebffb17abcf3d429
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
|
||||
namespace XericUI.ReflectionUIGenerator
|
||||
{
|
||||
/// <summary>
|
||||
/// 预制体覆盖特性
|
||||
/// 覆盖对应 Entry 或普通字段生成 UI 时使用的预制体名称
|
||||
///
|
||||
/// 使用示例:
|
||||
/// [XuiavrgFieldPrefabOverride("CustomSpeedPrefab")] public float speed;
|
||||
///
|
||||
/// Manager 在 GenerateUI 阶段会优先使用此名称查找 PropertyGroup
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
|
||||
public class XuiavrgFieldPrefabOverrideAttribute : Attribute, IXuiavrgAttribute
|
||||
{
|
||||
/// <summary>覆盖的预制体组名称</summary>
|
||||
public readonly string PrefabGroupName;
|
||||
|
||||
/// <summary>
|
||||
/// 创建预制体覆盖标记
|
||||
/// </summary>
|
||||
/// <param name="prefabGroupName">
|
||||
/// 目标预制体组名称,与 XuiavrgPropertyGroupScriptableObject.groupName 匹配
|
||||
/// </param>
|
||||
public XuiavrgFieldPrefabOverrideAttribute(string prefabGroupName)
|
||||
{
|
||||
PrefabGroupName = prefabGroupName;
|
||||
}
|
||||
|
||||
public void BindProperty(XuiavrgInspectorProperty property)
|
||||
{
|
||||
// 新的 Entry 体系通过 Manager 直接处理此 Attribute
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 46d359a456cc33249aa72c04a95987ef
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user