由于是不同按钮选择,普通的button实现不了,就自己写了一个,后面发现,就是个简易版的Toggle。
按钮选择:
using UnityEngine;
using UnityEngine.UI;
namespace LastZero.Utility.UI
{
public class ButtonSelect: MonoBehaviour {
public Sprite normal;//常态
public Sprite selected;//被选择
public ButtonSelectGroup group;//组
private void Start()
{
if (group != null)
{
group.Add(this);
}
if (GetComponent<Button>() == null)
{
gameObject.AddComponent<Button>();
}
GetComponent<Button>().onClick.AddListener(ClickEvent);
}
/// <summary>
/// 点击事件
/// </summary>
private void ClickEvent()
{
if (group == null)
{
GetComponent<Image>().sprite = GetComponent<Image>().sprite == normal ? selected : normal;
}
else
{
for (int i = 0; i < group.GetGroup().Count; i++)
{
group.GetGroup()[i].GetComponent<Image>().sprite = group.GetGroup()[i].normal;
}
GetComponent<Image>().sprite = selected;
}
}
}
}
按钮组:
using System.Collections.Generic;
using UnityEngine;
namespace LastZero.Utility.UI
{
public class ButtonSelectGroup: MonoBehaviour {
/// <summary>
/// 组
/// </summary>
private List<ButtonSelect> buttonGroup = new List<ButtonSelect>();
/// <summary>
/// 添加
/// </summary>
/// <param name="buttonselect">按钮</param>
public void Add(ButtonSelect buttonSelect)
{
if (!buttonGroup.Contains(buttonSelect))
{
buttonGroup.Add(buttonSelect);
}
}
/// <summary>
/// 获取按钮组集合
/// </summary>
/// <returns>组</returns>
public List<ButtonSelect> GetGroup()
{
return buttonGroup;
}
}
}