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

80 lines
4.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using UnityEngine;
using UnityEngine.UI;
using PhxhSDK;
/*
╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ UIWindow 默认Home按钮处理模块 (Default Home Button) ║
╠═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
║ ║
║ 【功能说明】 ║
║ 处理UIWindow的默认"回主界面"按钮的自动绑定和点击逻辑。 ║
║ 通过约定节点名BtnHome、BtnBackHome、HomeButton框架自动识别并绑定按钮。 ║
║ ║
║ 【使用方式】 ║
║ 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
}