添加了编辑器下的组件立刻更新模式
This commit is contained in:
@@ -54,13 +54,30 @@ namespace XericUI.OverrideUI
|
|||||||
{
|
{
|
||||||
base.OnEnable();
|
base.OnEnable();
|
||||||
|
|
||||||
|
RevalidateStyles();
|
||||||
|
|
||||||
|
StyleRefreshManager.Register(this);
|
||||||
|
ApplyForState(m_CurrentState);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
protected override void OnValidate()
|
||||||
|
{
|
||||||
|
base.OnValidate();
|
||||||
|
RevalidateStyles();
|
||||||
|
ApplyForState(m_CurrentState);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private void RevalidateStyles()
|
||||||
|
{
|
||||||
|
m_ColorState?.UnsubscribeAll(OnStyleChanged);
|
||||||
|
m_TextureState?.UnsubscribeAll(OnStyleChanged);
|
||||||
|
|
||||||
m_ColorState?.RegisterAll();
|
m_ColorState?.RegisterAll();
|
||||||
m_TextureState?.RegisterAll();
|
m_TextureState?.RegisterAll();
|
||||||
m_ColorState?.SubscribeAll(OnStyleChanged);
|
m_ColorState?.SubscribeAll(OnStyleChanged);
|
||||||
m_TextureState?.SubscribeAll(OnStyleChanged);
|
m_TextureState?.SubscribeAll(OnStyleChanged);
|
||||||
|
|
||||||
StyleRefreshManager.Register(this);
|
|
||||||
ApplyForState(m_CurrentState);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnDisable()
|
protected override void OnDisable()
|
||||||
|
|||||||
@@ -56,6 +56,21 @@ namespace XericUI.OverrideUI
|
|||||||
ApplyAllStyles();
|
ApplyAllStyles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
/// <summary>编辑器下属性变更时即刻刷新(路径从空变为有效等场景)</summary>
|
||||||
|
protected override void OnValidate()
|
||||||
|
{
|
||||||
|
base.OnValidate();
|
||||||
|
if (!m_AutoRefresh) return;
|
||||||
|
|
||||||
|
RegisterIfValid(m_ColorStyle);
|
||||||
|
RegisterIfValid(m_TextureStyle);
|
||||||
|
RegisterIfValid(m_MaterialStyle);
|
||||||
|
|
||||||
|
ApplyAllStyles();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
protected override void OnDisable()
|
protected override void OnDisable()
|
||||||
{
|
{
|
||||||
UnregisterIfValid(m_ColorStyle);
|
UnregisterIfValid(m_ColorStyle);
|
||||||
@@ -70,6 +85,8 @@ namespace XericUI.OverrideUI
|
|||||||
if (field == null) return;
|
if (field == null) return;
|
||||||
// 路径为空说明未在 Inspector 中配置,跳过注册避免空路径查询错误
|
// 路径为空说明未在 Inspector 中配置,跳过注册避免空路径查询错误
|
||||||
if (string.IsNullOrEmpty(field.StylePath)) return;
|
if (string.IsNullOrEmpty(field.StylePath)) return;
|
||||||
|
// 先退订再注册,防止 OnValidate 重复调用导致双重订阅
|
||||||
|
field.Member.OnValueChanged -= OnStyleChanged;
|
||||||
field.Register();
|
field.Register();
|
||||||
field.Member.OnValueChanged += OnStyleChanged;
|
field.Member.OnValueChanged += OnStyleChanged;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,6 +74,33 @@ namespace XericUI.OverrideUI
|
|||||||
{
|
{
|
||||||
base.OnEnable();
|
base.OnEnable();
|
||||||
|
|
||||||
|
RevalidateStyles();
|
||||||
|
|
||||||
|
StyleRefreshManager.Register(this);
|
||||||
|
onValueChanged.AddListener(OnToggleValueChanged);
|
||||||
|
ApplyForState(m_CurrentState);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
/// <summary>编辑器下属性变更时即刻刷新(路径从空变为有效等场景)</summary>
|
||||||
|
protected override void OnValidate()
|
||||||
|
{
|
||||||
|
base.OnValidate();
|
||||||
|
RevalidateStyles();
|
||||||
|
ApplyForState(m_CurrentState);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/// <summary>重新注册/订阅所有 StyleField(供 OnEnable 和 OnValidate 共用)</summary>
|
||||||
|
private void RevalidateStyles()
|
||||||
|
{
|
||||||
|
// 先退订防止双重订阅
|
||||||
|
m_ColorState?.UnsubscribeAll(OnStyleChanged);
|
||||||
|
m_TextureState?.UnsubscribeAll(OnStyleChanged);
|
||||||
|
m_OnOverrideColor.Member.OnValueChanged -= OnStyleChanged;
|
||||||
|
m_OnOverrideTexture.Member.OnValueChanged -= OnStyleChanged;
|
||||||
|
m_CheckmarkStyle.Member.OnValueChanged -= OnStyleChanged;
|
||||||
|
|
||||||
m_ColorState?.RegisterAll();
|
m_ColorState?.RegisterAll();
|
||||||
m_TextureState?.RegisterAll();
|
m_TextureState?.RegisterAll();
|
||||||
m_ColorState?.SubscribeAll(OnStyleChanged);
|
m_ColorState?.SubscribeAll(OnStyleChanged);
|
||||||
@@ -85,10 +112,6 @@ namespace XericUI.OverrideUI
|
|||||||
m_OnOverrideTexture.Member.OnValueChanged += OnStyleChanged;
|
m_OnOverrideTexture.Member.OnValueChanged += OnStyleChanged;
|
||||||
m_CheckmarkStyle?.Register();
|
m_CheckmarkStyle?.Register();
|
||||||
m_CheckmarkStyle.Member.OnValueChanged += OnStyleChanged;
|
m_CheckmarkStyle.Member.OnValueChanged += OnStyleChanged;
|
||||||
|
|
||||||
StyleRefreshManager.Register(this);
|
|
||||||
onValueChanged.AddListener(OnToggleValueChanged);
|
|
||||||
ApplyForState(m_CurrentState);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnDisable()
|
protected override void OnDisable()
|
||||||
|
|||||||
Reference in New Issue
Block a user