using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; namespace MuHua { /// /// UI容器 /// public class UIContainer where Item : UIItem { public readonly VisualElement container; public readonly VisualTreeAsset templateAsset; public readonly Func generate; public List uiItems = new List(); /// UI容器 public UIContainer(VisualElement container, VisualTreeAsset templateAsset, Func generate) { this.container = container; this.templateAsset = templateAsset; this.generate = generate; } /// 释放资源 public void Release() { container.Clear(); uiItems.ForEach(obj => obj.Release()); uiItems = new List(); } /// 创建UI项 public void Create(List datas) { Release(); datas.ForEach(Create); } /// 创建UI项 public void Create(Data data) { VisualElement element = templateAsset.Instantiate(); Item item = generate(data, element); container.Add(item.element); uiItems.Add(item); } } }