GameDesign 板


LINE

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://webptt.com/m.aspx?n=bbs/GameDesign/M.1542000571.A.42F.html ※ 編輯: knife5566 (123.194.164.208), 11/12/2018 13:30:40
1F:推 wix3000: 我都用Action 幾百年沒手動宣告delegate了 11/12 16:48
2F:→ wix3000: event大部分的使用狀況還是去幫程式定義出幾個關鍵的時間 11/12 16:51
3F:→ wix3000: 點,例如當數值發生改變、當某件事完成時等等。這點在遊 11/12 16:51
4F:→ wix3000: 戲中也不例外,例如當回合切換時,當角色攻擊時,當返回 11/12 16:51
5F:→ wix3000: 本陣時等等 11/12 16:51
6F:→ wix3000: 還有我很認真的告訴你,C#的變數請用駝峰命名,然後類別 11/12 16:53
7F:→ wix3000: 首字要大寫 11/12 16:53
8F:推 cjcat2266: 推樓上,雖然說命名這件事是看個人喜好,但C#是微軟自 11/12 17:22
9F:→ cjcat2266: 己維護更新的語言,VS的IntelliSense和C#外掛的某些功 11/12 17:22
10F:→ cjcat2266: 能還是直接內定駝峰命名法,跟著用方便多多。不過我是 11/12 17:22
11F:→ cjcat2266: 只有public field/property才用大頭駝峰法啦,protecte 11/12 17:22
12F:→ cjcat2266: d或private還是用自己C++習慣的m_/s_/g_/k開頭駝峰命名 11/12 17:22
13F:→ cjcat2266: 法 11/12 17:22
14F:推 cjcat2266: 也就是其他人會看到的interface命名法遵照微軟建議 11/12 17:23
15F:推 cjcat2266: 另外回歸正題,event其實只是個工具,我認為用自己或 11/12 17:25
16F:→ cjcat2266: 團隊認為合理的工具對症下藥就好,不必拘泥於用或不用 11/12 17:25
17F:→ cjcat2266: 特定工具 11/12 17:25
18F:→ jerryklu: unreal也會偵測駝峰命名在編輯器中顯示會自動多空格 11/12 23:11
19F:推 breakself: Event可以拿來斷耦合,例如在MVC架構中可以用Event傳出 11/17 01:05
20F:→ breakself: 去,減少不同Class交互Reference的狀況 11/17 01:05
21F:推 wulouise: 最後一段,我覺得問題是這個event不明確,或是資料不足 11/17 22:18
22F:→ wulouise: 原po可以舉一個具體的例子來提問,比較能釐清你的疑問 11/17 22:18
23F:推 wulouise: 如果不了解bad smell是甚麼,可以google design pattern 11/17 22:20
24F:推 wulouise: 有點想不太到什麼情況是不該收event卻收了還要不做事 11/17 22:22
我在網路上看到的例子是人物撿東西 直接的寫法: 人物撿東西,從人物送一個getcomponent到UI去,在UI裡面加入東西 event的寫法: 人物撿東西->觸發event UI->接收event,在物品欄裡面顯示 但是如果我今天有一大堆人物,一大堆的人物對應一大堆的UI,一大堆的人物撿了一大 堆的物品觸發一大堆的event 就不知道誰的event丟給誰要另外寫判斷了 ※ 編輯: knife5566 (123.194.164.208), 11/18/2018 01:00:15
25F:推 cjcat2266: 那些都可以成為客製event的參數 11/18 09:25
26F:推 wulouise: delegate可以自訂變數,你只要把從哪來,去哪裡標明就沒 11/18 13:16
27F:→ wulouise: 問題了 11/18 13:16
28F:推 wulouise: 設計上應該是所有取得道具event給ui supervisor 11/18 13:18
29F:→ wulouise: ui supervisor決定要更新到那,不會有混淆的問題出現 11/18 13:19
原來如此 這樣就能保證最後event的接收者只有一個 不過從supervisor到ui中間這段還是註定要有個直接給值的過程就是了 ※ 編輯: knife5566 (123.194.164.208), 11/18/2018 19:02:01
30F:推 wulouise: 我只是提供一種做法,建議你看看design pattern 11/19 19:42







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP