Buttn委托事件
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ButtonTest : MonoBehaviour {
public List<Sprite> _sprite;
private Button buttonLeft;
private Button buttonRight;
private Image image;
public int index;
public event System.Action<int> actionEvent;//事件
private void Awake()
{
buttonLeft = transform.Find("ButtonLeft").GetComponent<Button>();
buttonRight = transform.Find("ButtonRight").GetComponent<Button>();
image = transform.Find("Image").GetComponent < Image >();
//注册事件
actionEvent += LeftEvent;
actionEvent += RightEvent;
}
private void Start()
{
buttonLeft.onClick.AddListener(LeftButton);
buttonRight.onClick.AddListener(RightButton);
}
void LeftButton()
{
index--;
index = (int)Mathf.Repeat(index, _sprite.Count);
LeftEvent(index);
image.sprite = _sprite[index];
}
void RightButton()
{
index++;
index = (int)Mathf.Repeat(index, _sprite.Count);
RightEvent(index);
image.sprite = _sprite[index];
}
void LeftEvent(int index)
{
if (index==0)
{
buttonLeft.interactable = false;
}
else
{
buttonRight.interactable = true;
}
}
void RightEvent(int index)
{
if (index==_sprite.Count-1)
{
buttonRight.interactable = false;
}
else
{
buttonLeft.interactable = true;
}
}
}