BITKit/Packages/Runtime~/Unity/Common/Scripts/UX/Builder/UXBuilder.cs

36 lines
873 B
C#
Raw Normal View History

2023-08-11 23:57:37 +08:00
using System.Collections;
using System.Collections.Generic;
using BITKit.UX;
using UnityEngine;
using UnityEngine.UIElements;
public class UXBuilder : MonoBehaviour
{
[SerializeField, SerializeReference, SubclassSelector]
private IVisualElementProvider visualElementProvider;
[SerializeField] private VisualTreeAsset visualTreeAsset;
private readonly List<VisualElement> instances = new();
public T Build<T>() where T : VisualElement
{
var clone = visualTreeAsset.CloneTree()[0];
visualElementProvider.GetVisualElement().Add(clone);
instances.Add(clone);
return clone as T;
}
public UXContainer BuildAsContainer() => new(Build<VisualElement>());
public void Clear()
{
foreach (var x in instances)
{
visualElementProvider.GetVisualElement().Remove(x);
}
instances.Clear();
}
}