delegate 定義 ( 等同 C 的 Function Pointer ,
意指定義出 function的IO規範,同樣規範的function都可以叫做MyEvent )
public delegate int MyEvent (object sender, EventArgs e);
delegate 宣告
public MyEvent eventObject ;
---------------------------------------------
※因為C# 官方為了大家方便,所以內部制定了EventHandler模組,其實就是
delegate 定義 (早已在組件裡定義好
public delegate void EventHandler (object sender, EventArgs e);
delegate 宣告
public EventHandler myEvent;
---------------------
※要不要加 event 修飾詞,可加可不加,兩者差別
public EventHandler myEvent;
public event EventHandler myEvent;
懶人包:有加event時
1.) 不能在任意地方直接執行delegate (例如 myEvent(val1, val2) ,
2.) 只能使用+= 或是 -= 運算,且property設置的地方不是 set; get; 而是改用 add; remove;
3.) 是一種簡化步驟的修飾詞,就像是使用Property 一樣,不必private定義實體public 定義IO
4.) 結論:平常多使用 public event EventHandler myEvent;
沒加event 時
1.) 就是一般的變數
-----------------------------
※名詞命名
通常等待Event發生的 function (或是Main Thread) 命名為 Subscriber
發佈Event 的class 命名為 Publisher , event 成員命名為SampleEvent , 或是過去式動詞
---------------------------
※訂閱時機 Unity
當一個GameObject 建立時
從Awake() 訂閱 ,從 OnDestroy() 取消訂閱