88 lines
2.7 KiB
C#
88 lines
2.7 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.UI;
|
|||
|
|
namespace Kill.UI.Components
|
|||
|
|
{
|
|||
|
|
public class MutiSelectPage : MonoBehaviour
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 选项背景颜色 0:未选中 1:已选中
|
|||
|
|
/// </summary>
|
|||
|
|
public Color[] bgColors;
|
|||
|
|
public Color[] textColors;
|
|||
|
|
public List<Button> options = new List<Button>();
|
|||
|
|
int nowSelectedIndex = -1;
|
|||
|
|
public Action<int> onConfirm;
|
|||
|
|
public Button confirmBtn;
|
|||
|
|
public Button cancelBtn;
|
|||
|
|
public void Init(int selectedIndex, Action<int> onConfirm)
|
|||
|
|
{
|
|||
|
|
confirmBtn.onClick.AddListener(() =>
|
|||
|
|
{
|
|||
|
|
Confirm();
|
|||
|
|
});
|
|||
|
|
cancelBtn.onClick.AddListener(() =>
|
|||
|
|
{
|
|||
|
|
Cancel();
|
|||
|
|
});
|
|||
|
|
this.onConfirm = onConfirm;
|
|||
|
|
nowSelectedIndex = selectedIndex;
|
|||
|
|
for (int i = 0; i < options.Count; i++)
|
|||
|
|
{
|
|||
|
|
int index = i;
|
|||
|
|
options[i].onClick.RemoveAllListeners();
|
|||
|
|
options[i].onClick.AddListener(() =>
|
|||
|
|
{
|
|||
|
|
OnClickOption(index);
|
|||
|
|
});
|
|||
|
|
if (i == selectedIndex)
|
|||
|
|
{
|
|||
|
|
options[i].GetComponentInChildren<Text>().color = textColors[1];
|
|||
|
|
options[i].GetComponent<Image>().color = bgColors[1];
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
options[i].GetComponentInChildren<Text>().color = textColors[0];
|
|||
|
|
options[i].GetComponent<Image>().color = bgColors[0];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public void OnClickOption(int index)
|
|||
|
|
{
|
|||
|
|
if (nowSelectedIndex == index)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
nowSelectedIndex = index;
|
|||
|
|
}
|
|||
|
|
for (int i = 0; i < options.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (i == nowSelectedIndex)
|
|||
|
|
{
|
|||
|
|
options[i].GetComponentInChildren<Text>().color = textColors[1];
|
|||
|
|
options[i].GetComponent<Image>().color = bgColors[1];
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
options[i].GetComponentInChildren<Text>().color = textColors[0];
|
|||
|
|
options[i].GetComponent<Image>().color = bgColors[0];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public void Confirm()
|
|||
|
|
{
|
|||
|
|
onConfirm?.Invoke(nowSelectedIndex);
|
|||
|
|
Destroy(gameObject);
|
|||
|
|
}
|
|||
|
|
public void Cancel()
|
|||
|
|
{
|
|||
|
|
Destroy(gameObject);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|