ProjectDDD/Packages/SLUnity/SLUI/SLUIValuePrefab.cs

49 lines
1.1 KiB
C#
Raw Normal View History

using Superlazy;
using Superlazy.UI;
public class SLUIValuePrefab : SLUIComponent
{
public string bindingValue;
public string tagID = "";
private bool UseTag => tagID != string.Empty;
private SLResourceObject current;
private string currentPath;
protected override void Init()
{
}
protected override void Validate()
{
}
protected override void Enable()
{
SLGame.AddNotify(bindParent.BindPath.CombinePath(bindingValue), OnChange);
}
protected override void Disable()
{
SLGame.RemoveNotify(bindParent.BindPath.CombinePath(bindingValue), OnChange);
}
private void OnChange()
{
if (bindParent.Active == false) return;
var sessionRoot = SLGame.SessionGet(bindParent.BindPath);
var newValue = sessionRoot.Get(bindingValue);
if (tagID != "")
{
newValue = SLTag.Apply(newValue, tagID);
}
if (currentPath == newValue) return;
currentPath = newValue;
current?.Destroy();
current = SLResources.CreateInstance(newValue, transform);
}
}