Files
ZHGD_Web/Assets/Script/Controller/PageCutButtonController.cs
2025-07-13 23:16:20 +08:00

84 lines
2.3 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PageCutButtonController : Singleton<PageCutButtonController>
{
[Header("页面切换按钮名称标识")]
public string CutTag;
private Dictionary<string, Button> CutS = new Dictionary<string, Button>(); // 页面切换按钮集合
private Button TempCut; // 当前页面按钮
private void Start()
{
Init();
}
/// <summary>
/// 初始化,获取所有页面切换按钮
/// </summary>
void Init()
{
foreach (Transform obj in transform.GetComponentsInChildren<Transform>())
{
if (obj.name.Contains(CutTag))
{
CutS.Add(obj.name, obj.GetComponent<Button>());
obj.GetComponent<Button>().onClick.AddListener(() =>
{
PageController.Inst.PageCut(obj.name);
PageCutButtonController.Inst.PageCut(obj.name);
});
}
}
}
/// <summary>
/// 页面切换
/// </summary>
/// <param name="name">切换的页面</param>
public void PageCut(string name)
{
if (CutS.ContainsKey(name))
{
if (TempCut != null)
{
PageActive(TempCut, ButtonState.Normal);
}
else
{
PageActive(ButtonState.Normal);
}
PageActive(CutS[name], ButtonState.Select);
TempCut = CutS[name];
}
else
{
Debug.LogWarning(string.Format("页面:{0}不存在", name));
}
}
/// <summary>
/// 所有页面切换按钮选中或取消
/// </summary>
/// <param name="State">选中或取消状态</param>
void PageActive(ButtonState State)
{
foreach (KeyValuePair<string, Button> page in CutS)
{
page.Value.GetComponent<ButtonStateTool>().StateCut(State);
}
}
/// <summary>
/// 对某个页面切换按钮的选中或取消
/// </summary>
/// <param name="button">指定按钮</param>
/// <param name="State">选中或取消状态</param>
void PageActive(Button button, ButtonState State)
{
button.interactable = State == ButtonState.Normal ? true : false;
button.GetComponent<ButtonStateTool>().StateCut(State);
}
}