Files
ichni_Creator_Studio/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIButton.cs
SoulliesOfficial 731726239a 超级爆改
2026-03-22 12:05:32 -04:00

53 lines
1.6 KiB
C#

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;
}
}
}