94 lines
3.0 KiB
C#
94 lines
3.0 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
[RequireComponent(typeof(ToggleGroup))]
|
|
public class SystemLogicList : MonoBehaviour
|
|
{
|
|
public static SystemLogicList Instance;
|
|
public GameObject[] views;
|
|
private string[] names = { "#{3816}", "#{86717}", "#{4344}" };
|
|
public Toggle toggle;
|
|
public Sprite bgCloseSprite;
|
|
public Sprite arrowCloseSprite;
|
|
|
|
private void Awake()
|
|
{
|
|
Instance = this;
|
|
var toggleGroup = GetComponent<ToggleGroup>();
|
|
for (var i = 0; i < views.Length; i++)
|
|
{
|
|
// 最后一个直接使用样例
|
|
Toggle target;
|
|
if (i < views.Length - 1)
|
|
{
|
|
target = Instantiate(toggle);
|
|
target.transform.SetParent(toggle.transform.parent, false);
|
|
}
|
|
else
|
|
target = toggle;
|
|
var item = new SystemLogicItem();
|
|
var isOn = i == 0;
|
|
target.group = toggleGroup;
|
|
|
|
string title = GCGame.Table.StrDictionary.GetClientDictionaryString(names[i]);
|
|
|
|
item.Init(target, title, views[i], arrowCloseSprite, bgCloseSprite, isOn);
|
|
target.transform.SetAsLastSibling();
|
|
views[i].transform.SetAsLastSibling();
|
|
}
|
|
}
|
|
// 等待页面本身的Init完全执行
|
|
private void Start()
|
|
{
|
|
for (var i = 0; i < views.Length; i++)
|
|
{
|
|
var isOn = i == 0;
|
|
views[i].gameObject.SetActive(isOn);
|
|
}
|
|
}
|
|
|
|
private class SystemLogicItem
|
|
{
|
|
private Image _arrow;
|
|
private Image _backGround;
|
|
private GameObject _view;
|
|
private Sprite _arrowCloseSprite;
|
|
private Sprite _arrowSprite;
|
|
private Sprite _bgCloseSprite;
|
|
private Sprite _bgSprite;
|
|
|
|
public void Init(Toggle toggle, string name, GameObject view, Sprite arrowCloseSprite, Sprite bgCloseSprite, bool isOn)
|
|
{
|
|
toggle.isOn = isOn;
|
|
toggle.transform.Find("Name").GetComponent<Text>().text = name;
|
|
_arrow = toggle.transform.Find("Arrow").GetComponent<Image>();
|
|
_backGround = toggle.transform.Find("BackGround").GetComponent<Image>();
|
|
_view = view;
|
|
_arrowSprite = _arrow.sprite;
|
|
_arrowCloseSprite = arrowCloseSprite;
|
|
_bgSprite = _backGround.sprite;
|
|
_bgCloseSprite = bgCloseSprite;
|
|
toggle.onValueChanged.AddListener(OnToggleUpdate);
|
|
_arrow.sprite = isOn ? _arrowSprite : _arrowCloseSprite;
|
|
_backGround.sprite = isOn ? _bgSprite : _bgCloseSprite;
|
|
}
|
|
|
|
private void OnToggleUpdate(bool isOn)
|
|
{
|
|
_arrow.sprite = isOn ? _arrowSprite : _arrowCloseSprite;
|
|
_backGround.sprite = isOn ? _bgSprite : _bgCloseSprite;
|
|
_view.SetActive(isOn);
|
|
}
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
Instance = null;
|
|
}
|
|
|
|
public void ShowTeamSeting()
|
|
{
|
|
toggle.isOn = true;
|
|
}
|
|
} |