using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; namespace MuHua { /// /// UI项容器 /// public class ModuleUIItems : ModuleUIPanel, IDisposable where TItem : ModuleUIItem { public readonly VisualTreeAsset templateAsset;// 模板资源 public readonly Func generate;// 生成UI项的函数 public List uiItems = new List();// UI项列表 public TItem this[int index] { get => uiItems[index]; }// 索引器 /// UI容器 public ModuleUIItems(VisualElement element, VisualTreeAsset templateAsset, Func generate) : base(element) { this.templateAsset = templateAsset; this.generate = generate; } /// 释放资源 public void Dispose() { element.Clear(); uiItems.ForEach(obj => obj.Dispose()); uiItems = new List(); } /// 创建UI项 public void Create(List datas) { Dispose(); datas.ForEach(Create); } /// 创建UI项 public void Create(TData data) { VisualElement element = templateAsset.Instantiate(); TItem item = generate(data, element); this.element.Add(item.element); uiItems.Add(item); } /// 遍历 public void ForEach(Action action) { uiItems.ForEach(action); } } }