1
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,5 +12,7 @@ namespace MuHua {
|
|||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user