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/cn.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灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP