using UnityEngine; using System.Collections; public delegate void GreetingDelegate(string name); class GreetMange{ //第一种情况 //public GreetingDelegate de1; // public void GreetPeople(string name, GreetingDelegate MakeGreeting) // { // MakeGreeting(name); // } //第二种情况 //public GreetingDelegate de1; // public void GreetPeople(string name) // { // if(de1!=null){ // de1(name); // } // } //第三种情况 // public event GreetingDelegate de1; // public void GreetPeople(string name) // { // if(de1!=null){ // de1(name); // } // } } public class EventStudy : MonoBehaviour { void Start () { GreetMange greet = new GreetMange (); //第一种情况 // greet.de1 = EnglishGreeting; // greet.GreetPeople ("尹亮亮",greet.de1); //第二种情况 // greet.de1 = EnglishGreeting; // greet.GreetPeople ("我叫尹亮亮!"); //第三种情况 // greet.de1 += EnglishGreeting; // greet.GreetPeople ("我叫尹亮亮!"); } void onClick(GameObject go) { Debug.Log ("EventClick!"); } #region 事件机制 //事件的一个注册机制 public delegate void OnQuestChangeDelegate();//类比相当于是一个其它数据类型的别名 public event OnQuestChangeDelegate OnQuestChangeEvent; public void OnCanAcceptQuestChange(){ if(OnQuestChangeEvent!=null){ OnQuestChangeEvent(); } } #endregion private static void EnglishGreeting(string name) { Debug.Log("Morning:" + name); } // Update is called once per frame void Update () { } } |
|