using System; using System.Linq; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using MuHua; namespace MuHua { /// /// 滑块按钮 - 数据 /// public abstract class DataSlideButton { /// 绑定的元素 public VisualElement element; } /// /// 滑动按钮 /// public class UISlideButton : ModuleUIPanel where T : ModuleUIItem where Data : DataSlideButton { /// 绑定的画布 public readonly VisualElement canvas; public Data data; public ModuleUIItems Items;// UI项容器 /// 滑块 public VisualElement Slide => Q("Slide"); /// 容器 public VisualElement Container => Q("Container"); public UISlideButton(VisualElement element, VisualElement canvas, VisualTreeAsset templateAsset, Func generate) : base(element) { this.canvas = canvas; Items = new ModuleUIItems(Container, templateAsset, generate); ModuleUIItem.OnSelect += Settings; } public virtual void Dispose() { Items.Dispose(); } public virtual void Update() { if (data == null || data.element == null) { return; } Vector3 offset = data.element.worldBound.position - Slide.worldBound.position; Slide.transform.position += offset * Time.deltaTime * 20; } /// 释放资源 public virtual void Release() => Items.Dispose(); /// 创建UI项 public virtual void Create(List datas) => Items.Create(datas); /// 创建UI项 public virtual void Create(Data data) => Items.Create(data); /// 设置UI项 public virtual void Settings(Data data) => this.data = data; } }