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;
|
|
}
|
|
}
|
|
}
|