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() 取消訂閱