属性反射生成界面基本框架。

修复懒加载框的布局问题。
This commit is contained in:
2026-04-24 19:42:35 +08:00
parent 296beac104
commit 283a444228
26 changed files with 953 additions and 66 deletions
@@ -0,0 +1,142 @@
using System;
using System.Reflection;
using UnityEngine.Serialization;
namespace XericUI.ReflectionUIGenerator
{
/// <summary>
/// 反射属性中间层
/// </summary>
[Serializable]
public class XuiavrgInspectorProperty
{
public object valueTarget;
public bool isProperty;
public PropertyInfo propertyInfo;
public FieldInfo fieldInfo;
public string labelName;
public string uiPropertyName;
public string unitLabelName;
public bool mustFillIn;
public int inspectorOrder;
public string groupName;
public string onTriggerCall;
public XuiavrgSize argumentSize;
public bool hideInInspector;
/// <summary>
/// 绑定到数据端
/// </summary>
/// <param name="memberInfo"></param>
/// <param name="target"></param>
public void RegsiterDataValue(MemberInfo memberInfo, object target)
{
switch (memberInfo)
{
case PropertyInfo propertyInfo:
RegsiterDataValue(propertyInfo, target);
break;
case FieldInfo fieldInfo:
RegsiterDataValue(fieldInfo, target);
break;
}
}
/// <summary>
/// 绑定到数据端
/// </summary>
/// <param name="memberInfo"></param>
/// <param name="target"></param>
public virtual void RegsiterDataValue(PropertyInfo memberInfo, object target)
{
valueTarget = target;
isProperty = true;
propertyInfo = memberInfo;
}
/// <summary>
/// 绑定到数据端
/// </summary>
/// <param name="memberInfo"></param>
/// <param name="target"></param>
public virtual void RegsiterDataValue(FieldInfo memberInfo, object target)
{
valueTarget = target;
isProperty = false;
fieldInfo = memberInfo;
}
/// <summary>
/// 绑定到界面端
/// </summary>
public virtual void RegsiterUIElement()
{
}
/// <summary>
/// 数据端值发生变更
/// </summary>
public void CallDataValueChange()
{
}
/// <summary>
/// 界面端数据发生变更
/// </summary>
public void CallUIValueChange()
{
}
/// <summary>
/// 从数据端获取值
/// </summary>
/// <returns></returns>
public object GetValueFromTargetMember()
{
if (isProperty)
return propertyInfo.GetValue(valueTarget);
else
return fieldInfo.GetValue(valueTarget);
}
/// <summary>
/// 设置值到数据端
/// </summary>
/// <param name="value"></param>
public void SetValueToTargetMember(object value)
{
if (isProperty)
propertyInfo.SetValue(valueTarget, value);
else
fieldInfo.SetValue(valueTarget, value);
}
/// <summary>
/// 从界面端获取值
/// </summary>
/// <returns></returns>
public object GetValueFormUIElement()
{
return null;
}
/// <summary>
/// 设置值到界面端
/// </summary>
/// <param name="value"></param>
public void SetValueToUIElement(object value)
{
}
public void Clear()
{
}
}
}