C#中delegate event是一種寫法,有的人喜歡有的人不喜歡,但大體來說
知不知道有這東西存在是某些人評定會不會C#的標準。
在unity中也使用了delegate event這東西,在一些人的網誌上表示用event才不會
讓程式有「壞味道」(不知道這指啥)
用起來大概是這種感覺:
假設我今天有一段專門處理UI的按鈕的class
public class UI : MonoBehaviour
{
public delegate void UI_trigger(string just_a_string);
public static event UI_trigger my_UI_trigger;
public void button(string just_a_string) //按下按鈕的時候call這行
{
my_UI_trigger(just_a_string);
}
}
這樣我的button這個function就只要裡面有my_UI_trigger(_objects);這行就好,至於
哪個程式要來接這段程式就不是這個class要考慮的事,就好像當兵的時候連長在集合場
亂叫,連長本身不care哪個確切的誰要來理自己亂叫,但一定要有兵仔回應就是。
如果有程式要來回應按鈕按下去時,大概是這樣寫
public units : MonoBehaviour
{
void OnEnable()
{
UI.my_UI_trigger += units_trigger(string just_a_string);
}
void units_trigger(string just_a_string) //UI的button被call時跑到這行
{
Print("新兵"+transform.gameObject.name+"接收到"+just_a_string);
}
}
但實際上在寫的時候呢,除了UI以外,通常遊戲中建立event的物件可能是不特定的多
數,而接收event的物件也是不特定的多數,最後就變成N個event的頭配上M個event的尾,
最後還得寫code來確認到底是這個event是誰發來的要傳給誰,好像有點本末倒置了。寫
是可以寫但是感覺沒像人家說得那麼的漂亮。
所以這東西到底實際上要怎麼用。