This commit is contained in:
MuHua-123
2025-04-10 14:46:22 +08:00
parent 7597d7e2ee
commit d6d945c2ce
2 changed files with 14 additions and 7 deletions
@@ -8,12 +8,17 @@ namespace MuHua {
/// <summary> /// <summary>
/// UI项容器 /// UI项容器
/// </summary> /// </summary>
public class ModuleUIItems<Item, Data> : ModuleUIPanel where Item : ModuleUIItem<Data> { public class ModuleUIItems<T, Data> : ModuleUIPanel where T : ModuleUIItem<Data> {
public readonly VisualTreeAsset templateAsset; public readonly VisualTreeAsset templateAsset;
public readonly Func<Data, VisualElement, Item> generate; public readonly Func<Data, VisualElement, T> generate;
public List<Item> uiItems = new List<Item>();
public List<T> uiItems = new List<T>();
/// <summary> 数据操作 </summary
public virtual T this[int index] => uiItems[index];
/// <summary> UI容器 </summary> /// <summary> UI容器 </summary>
public ModuleUIItems(VisualElement element, VisualTreeAsset templateAsset, Func<Data, VisualElement, Item> generate) : base(element) { public ModuleUIItems(VisualElement element, VisualTreeAsset templateAsset, Func<Data, VisualElement, T> generate) : base(element) {
this.templateAsset = templateAsset; this.templateAsset = templateAsset;
this.generate = generate; this.generate = generate;
} }
@@ -21,7 +26,7 @@ namespace MuHua {
public void Release() { public void Release() {
element.Clear(); element.Clear();
uiItems.ForEach(obj => obj.Release()); uiItems.ForEach(obj => obj.Release());
uiItems = new List<Item>(); uiItems = new List<T>();
} }
/// <summary> 创建UI项 </summary> /// <summary> 创建UI项 </summary>
public void Create(List<Data> datas) { public void Create(List<Data> datas) {
@@ -31,7 +36,7 @@ namespace MuHua {
/// <summary> 创建UI项 </summary> /// <summary> 创建UI项 </summary>
public void Create(Data data) { public void Create(Data data) {
VisualElement element = templateAsset.Instantiate(); VisualElement element = templateAsset.Instantiate();
Item item = generate(data, element); T item = generate(data, element);
this.element.Add(item.element); this.element.Add(item.element);
uiItems.Add(item); uiItems.Add(item);
} }
@@ -7,10 +7,12 @@ namespace MuHua {
/// <summary> /// <summary>
/// UI控件 /// UI控件
/// </summary> /// </summary>
public class ModuleUIPanel { public class ModuleUIPanel {
/// <summary> 绑定的元素 </summary> /// <summary> 绑定的元素 </summary>
public readonly VisualElement element; public readonly VisualElement element;
/// <summary> UI控件 </summary> /// <summary> UI控件 </summary>
public ModuleUIPanel(VisualElement element) => this.element = element; public ModuleUIPanel(VisualElement element) => this.element = element;
/// <summary> 查询UI元素 </summary>
public T Q<T>(string name = null, string className = null) where T : VisualElement => element.Q<T>(name, className);
} }
} }