using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; using TMPro; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; namespace Ichni.Editor { public class DynamicUIButton : DynamicUIElement { public Button button; public TMP_Text buttonText; public override void Initialize(IBaseElement baseElement, string title, string parameterName) { base.Initialize(baseElement, title, parameterName); } public void SetText(string buttonText) { this.buttonText.text = buttonText; } private UnityAction customAction; private UnityAction appliedFunction; public void ApplyFunction(UnityAction function) { // [对象池安全] 改为只清除我们自己挂载的动作,避免杀掉预制体内置的动效 if (appliedFunction != null) button.onClick.RemoveListener(appliedFunction); button.onClick.RemoveListener(OnButtonClick); customAction = null; appliedFunction = function; button.onClick.AddListener(appliedFunction); button.onClick.AddListener(OnButtonClick); } private void OnButtonClick() { if (connectedBaseElement != null) connectedBaseElement.Refresh(); customAction?.Invoke(); } public override DynamicUIElement AddListenerFunction(UnityAction action) { customAction += action; return this; } } }