using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestDelegate : MonoBehaviour {
//单例
public static TestDelegate instance;
//定义一个委托原形
//public delegate void OnChangeColorHandler();
//定义一个委托
//public OnChangeScaleHandler OnChangeColor;
//快捷定义一个委托
public System.Action OnChangeColor;
//加上一个 Event 委托就变成了 一个事件
//public event System.Action OnChangeColor;
void Awake()
{
instance = this;
}
void Update ()
{
if (Input.GetKey(KeyCode.Space))
{
if (OnChangeColor != null)
{
OnChangeColor();
}
}
}
}
在场景中创建一个小球 监听这个委托
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sphere : MonoBehaviour {
void Start ()
{
//添加一个监听事件
TestDelegate.instance.OnChangeScale += OnChangeScale;
}
private void OnChangeScale()
{
transform.GetComponent<MeshRenderer>().material.color = new Color(Random.Range(0f,1f), Random.Range(0f, 1f), Random.Range(0f, 1f));
}
void OnDestroy()
{
//移除监听事件
TestDelegate.instance.OnChangeScale -= OnChangeScale;
}
}