60 lines
1.3 KiB
C#
60 lines
1.3 KiB
C#
|
namespace SRF.UI
|
|||
|
{
|
|||
|
using Internal;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
[ExecuteInEditMode]
|
|||
|
[AddComponentMenu(ComponentMenuPaths.StyleRoot)]
|
|||
|
public sealed class StyleRoot : SRMonoBehaviour
|
|||
|
{
|
|||
|
private StyleSheet _activeStyleSheet;
|
|||
|
public StyleSheet StyleSheet;
|
|||
|
|
|||
|
public Style GetStyle(string key)
|
|||
|
{
|
|||
|
if (StyleSheet == null)
|
|||
|
{
|
|||
|
Debug.LogWarning("[StyleRoot] StyleSheet is not set.", this);
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
return StyleSheet.GetStyle(key);
|
|||
|
}
|
|||
|
|
|||
|
private void OnEnable()
|
|||
|
{
|
|||
|
_activeStyleSheet = null;
|
|||
|
|
|||
|
if (StyleSheet != null)
|
|||
|
{
|
|||
|
OnStyleSheetChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void OnDisable()
|
|||
|
{
|
|||
|
OnStyleSheetChanged();
|
|||
|
}
|
|||
|
|
|||
|
private void Update()
|
|||
|
{
|
|||
|
if (_activeStyleSheet != StyleSheet)
|
|||
|
{
|
|||
|
OnStyleSheetChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void OnStyleSheetChanged()
|
|||
|
{
|
|||
|
_activeStyleSheet = StyleSheet;
|
|||
|
|
|||
|
BroadcastMessage("SRStyleDirty", SendMessageOptions.DontRequireReceiver);
|
|||
|
}
|
|||
|
|
|||
|
public void SetDirty()
|
|||
|
{
|
|||
|
_activeStyleSheet = null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|