80 lines
4.5 KiB
C#
80 lines
4.5 KiB
C#
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
|
||
}
|
||
|