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

80 lines
4.5 KiB
C#
Raw Normal View History

using UnityEngine;
using UnityEngine.UI;
using PhxhSDK;
/*
UIWindow Home (Default Home Button)
UIWindow"回主界面"
BtnHomeBtnBackHomeHomeButton
使
1. 使
2. DefaultHomeButtonNames
3. OnHomeClick()
OnHomeClick() CloseWindow(true)
*/
/// <summary>
/// UI窗口基类 - 默认Home按钮处理部分
/// 负责自动识别和绑定预制体中的"回主界面"按钮
/// </summary>
public abstract partial class UIWindow
{
#region Default Home Button - 默认回主界面按钮自动绑定
/// <summary>
/// 默认回主界面按钮的节点名配置(子类可重写)
/// 默认支持BtnHome、BtnBackHome、HomeButton
/// </summary>
protected virtual string[] DefaultHomeButtonNames => new[] { "BtnHome", "BtnBackHome", "HomeButton" };
/// <summary>
/// 绑定所有配置的默认回主界面按钮
/// 在 DoInit() 阶段自动调用
/// </summary>
private void BindDefaultHomeButtons()
{
foreach (var buttonName in DefaultHomeButtonNames)
{
TryBindHomeButton(buttonName, OnHomeClick);
}
}
/// <summary>
/// 尝试绑定回主界面按钮(节点不存在时静默跳过)
/// </summary>
private void TryBindHomeButton(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 OnHomeClick()
{
CloseWindow(true);
}
#endregion
}