84 lines
2.3 KiB
C#
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);
|
|
}
|
|
}
|