当Slider的值改变时,触发事件
public class Manager : MonoBehaviour {
// Singleton
private static Manager instance;
// Instance
public static Manager Instance
{
get
{
if (instance == null)
instance = GameObject.FindObjectOfType(typeof(Manager)) as Manager;
return instance;
}
}
// Event Handler
public delegate void RedColorEvent(GameObject go);
public event RedColorEvent RedColor;
// 方法在Slider值改变时调用
public void AlterValue(GameObject go)
{
Debug.Log("改变R值,变化颜色");
if (RedColor != null)
{
RedColor(go);
}
}
}
事件使用方法:变换颜色的Imaget注册事件
public class ChangeColor : MonoBehaviour
{
//Awake
void Awake()
{
//Start the event listener
Manager.Instance.RedColor += Implement;
}
public void Implement(GameObject go)
{
if (go == gameObject)
{
gameObject.GetComponent<Image>().color = Color.green;
}
}
}
事件可以被多个对象注册,如果修改Implement(GameObject go)为:
public void Implement(GameObject go)
{
if (go == gameObject)
{
gameObject.GetComponent<Image>().color = Color.green;
}
else
{
gameObject.GetComponent<Image>().color = Color.blue;
}
}
则会发现在Slider中赋值的gameobject变成了绿色,其他的注册了事件的gameobject变成了蓝色。