收紧各组件权限

This commit is contained in:
2026-07-25 23:56:29 +08:00
parent 251b8730b9
commit fe5ae4726c
8 changed files with 342 additions and 95 deletions
@@ -1,19 +1,27 @@
using UnityEngine;
using UnityEngine.UI;
namespace XericUI.ReflectionUIGenerator
{
/// <summary>
/// Label 只读值组件 — 纯文本展示,无交互控件
/// 拥有自己的 _valueDisplayText 用于显示值
/// </summary>
[AddComponentMenu("Xeric Library/UI Action Vessel/Values/XUIAvrgMDLabelValue")]
public class XUIAvrgMDLabelValue : XUIAvrgMDValue
{
[SerializeField, Tooltip("值显示文本 — 显示当前字段的值")]
#if dUI_TextMeshPro
[SerializeField, Tooltip("关联的 TMP_Text 组件(标签文本 + 值文本共用一个 Text 时使用)")]
private TMPro.TMP_Text _tmpText;
private TMPro.TMP_Text _valueDisplayText;
#else
private UnityEngine.UI.Text _valueDisplayText;
#endif
public override void OnPoolRelease()
{
if (_valueDisplayText != null) _valueDisplayText.text = "";
base.OnPoolRelease();
}
public override void BindToAccessor(
IAvrgValueAccessor accessor,
AvrgMvvmBinding binding,
@@ -33,5 +41,35 @@ namespace XericUI.ReflectionUIGenerator
var initialValue = accessor.GetValue();
UpdateValueDisplay(initialValue, ValidationState.Normal);
}
protected override void UpdateValueDisplay(object value, ValidationState state)
{
if (_valueDisplayText != null)
{
_valueDisplayText.text = CurrentAccessor?.FormatDisplay(value) ?? value?.ToString() ?? "";
_valueDisplayText.color = state == ValidationState.Invalid
? Color.red
: state == ValidationState.Warning
? new Color(1f, 0.92f, 0.016f)
: Color.white;
}
base.UpdateValueDisplay(value, state);
}
protected override void OnValidationStateChanged(ValidationState state)
{
base.OnValidationStateChanged(state);
if (_valueDisplayText != null)
{
_valueDisplayText.color = state == ValidationState.Invalid
? Color.red
: state == ValidationState.Warning
? new Color(1f, 0.92f, 0.016f)
: Color.white;
}
}
}
}