為什麼要用事件機制,主要是為了降低程式之間的耦合度(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);}}}

c#六角恐龍 發表在 痞客邦 留言(0) 人氣()

在使用Unity開發時,會經常使用Coroutine(協程),來做程式流程的結構或當成類似多重執行緒來使用,所以在此列出yield常用的ㄧ些方法,以便日後使用複習

  • yield return null; //下一幀再執行後續程式碼(不消耗內存)

  • yield return 0; //下一幀再執行後續程式碼

  • yield return 任意數字; //下一幀再執行後續程式碼,跟使用yield return 0 一樣

  • yield break; //直接結束該Corotine(協程),跟for-loop(For迴圈)的break一樣功能

c#六角恐龍 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。