[請益] unity中delegate event的使用時機?
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是誰發來的要傳給誰,好像有點本末倒置了。寫
是可以寫但是感覺沒像人家說得那麼的漂亮。
所以這東西到底實際上要怎麼用。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.164.208
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1542000571.A.42F.html
※ 編輯: knife5566 (123.194.164.208), 11/12/2018 13:30:40
推
11/12 16:48,
6年前
, 1F
11/12 16:48, 1F
→
11/12 16:51,
6年前
, 2F
11/12 16:51, 2F
→
11/12 16:51,
6年前
, 3F
11/12 16:51, 3F
→
11/12 16:51,
6年前
, 4F
11/12 16:51, 4F
→
11/12 16:51,
6年前
, 5F
11/12 16:51, 5F
→
11/12 16:53,
6年前
, 6F
11/12 16:53, 6F
→
11/12 16:53,
6年前
, 7F
11/12 16:53, 7F
推
11/12 17:22,
6年前
, 8F
11/12 17:22, 8F
→
11/12 17:22,
6年前
, 9F
11/12 17:22, 9F
→
11/12 17:22,
6年前
, 10F
11/12 17:22, 10F
→
11/12 17:22,
6年前
, 11F
11/12 17:22, 11F
→
11/12 17:22,
6年前
, 12F
11/12 17:22, 12F
→
11/12 17:22,
6年前
, 13F
11/12 17:22, 13F
推
11/12 17:23,
6年前
, 14F
11/12 17:23, 14F
推
11/12 17:25,
6年前
, 15F
11/12 17:25, 15F
→
11/12 17:25,
6年前
, 16F
11/12 17:25, 16F
→
11/12 17:25,
6年前
, 17F
11/12 17:25, 17F
→
11/12 23:11,
6年前
, 18F
11/12 23:11, 18F
推
11/17 01:05,
6年前
, 19F
11/17 01:05, 19F
→
11/17 01:05,
6年前
, 20F
11/17 01:05, 20F
推
11/17 22:18,
6年前
, 21F
11/17 22:18, 21F
→
11/17 22:18,
6年前
, 22F
11/17 22:18, 22F
推
11/17 22:20,
6年前
, 23F
11/17 22:20, 23F
推
11/17 22:22,
6年前
, 24F
11/17 22:22, 24F
我在網路上看到的例子是人物撿東西
直接的寫法:
人物撿東西,從人物送一個getcomponent到UI去,在UI裡面加入東西
event的寫法:
人物撿東西->觸發event
UI->接收event,在物品欄裡面顯示
但是如果我今天有一大堆人物,一大堆的人物對應一大堆的UI,一大堆的人物撿了一大
堆的物品觸發一大堆的event
就不知道誰的event丟給誰要另外寫判斷了
※ 編輯: knife5566 (123.194.164.208), 11/18/2018 01:00:15
推
11/18 09:25,
6年前
, 25F
11/18 09:25, 25F
推
11/18 13:16,
6年前
, 26F
11/18 13:16, 26F
→
11/18 13:16,
6年前
, 27F
11/18 13:16, 27F
推
11/18 13:18,
6年前
, 28F
11/18 13:18, 28F
→
11/18 13:19,
6年前
, 29F
11/18 13:19, 29F
原來如此 這樣就能保證最後event的接收者只有一個
不過從supervisor到ui中間這段還是註定要有個直接給值的過程就是了
※ 編輯: knife5566 (123.194.164.208), 11/18/2018 19:02:01
推
11/19 19:42,
6年前
, 30F
11/19 19:42, 30F
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章