為什麼要用事件機制,主要是為了降低程式之間的耦合度(Coupling),日後維護起來就方便許多。
例如 : 以背包系統來說,主遊戲流程開啟背包,背包內點選物品,就單純的寫法是背包的class有主遊戲流程的參考(reference),來通知玩家點到哪個物品,這樣就大大增加了耦合度。
publicclassMainApp:MonoBehaviour{[SerializeField]ItemBag itemBag =null;publicvoidOnItemSelected(Item item){this.itemBag.Hide();// TODO: Item}
voidUpdate(){if(this.openItemBag){this.itemBag.Show(this);}}}publicclassItemBag:MonoBehaviour{MainApp callee;publicvoidShow(MainApp app){this.callee = app;// TODO: 開啟道具選單}publicvoidHide(){// TODO: 關閉道具選單}// 此函數假設由 UI 按鈕呼叫voidOnItemSelected(Item item){if(this.callee !=null){
callee.OnItemSelected(item);}}}