NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Framework/UI/UIWindow.DefaultCloseButton.cs

81 lines
4.7 KiB
C#
Raw Normal View History

using UnityEngine;
using UnityEngine.UI;
using PhxhSDK;
/*
UIWindow Close (Default Close Button)
UIWindow"关闭"
BgCloseBtnClose
使
1. 使
2. DefaultCloseButtonNames
3. OnCloseClick()
OnCloseClick() CloseWindow(true) -
CloseWindow(false) -
*/
/// <summary>
/// UI窗口基类 - 默认Close按钮处理部分
/// 负责自动识别和绑定预制体中的"关闭"按钮
/// </summary>
public abstract partial class UIWindow
{
#region Default Close Button - 默认关闭按钮自动绑定
/// <summary>
/// 默认关闭按钮的节点名配置(子类可重写)
/// 默认支持BgClose背景关闭、BtnClose标题栏关闭
/// </summary>
protected virtual string[] DefaultCloseButtonNames => new[] { "BgClose", "BtnClose" };
/// <summary>
/// 绑定所有配置的默认关闭按钮
/// 在 DoInit() 阶段自动调用
/// </summary>
private void BindDefaultCloseButtons()
{
foreach (var buttonName in DefaultCloseButtonNames)
{
TryBindCloseButton(buttonName, OnCloseClick);
}
}
/// <summary>
/// 尝试绑定关闭按钮(节点不存在时静默跳过)
/// </summary>
private void TryBindCloseButton(string nodeName, System.Action callback)
{
var trans = transform.Find(nodeName);
if (trans)
{
var btn = trans.GetComponent<Button>();
if (btn)
{
BindButton(btn, callback);
DebugUtil.Log("✅ 已自动绑定关闭按钮: {0} -> {1}", WindowName, nodeName);
}
}
}
/// <summary>
/// 关闭按钮点击回调(虚方法,子类可重写)
/// 默认行为CloseWindow(true) - 关闭并销毁窗口
/// </summary>
protected virtual void OnCloseClick()
{
CloseWindow(true);
}
#endregion
}