1. 程式人生 > >unity遊戲設計模式——命令模式(自學筆記)

unity遊戲設計模式——命令模式(自學筆記)

在這裡我要感謝下Bob Nystrom先生,正是他的書為我的學習做了鋪墊。

首先我並非科班出身,我是學建築的。在先天上有缺陷,雖然讀了雜七雜八的書,可是並不能對我有實質性的提升。

在工作中看前輩寫的程式碼,我也知道這些設計模式怎麼用,但是很難從裡到外的探究。

自從看了許多大佬寫的部落格之後,我茅塞頓開,學到了好多。在這裡寫寫各位大神的指點,我會把遊戲程式設計模式的筆記一直寫下去的。

http://gpp.tkchu.me/這是遊戲程式設計模式的網址。

命令模式:

我並不想再去複述大神們的話,下面就是寫出我的理解。

命令=命令的發出者(發出什麼命令)——命令的接受者(去做什麼事),這兩個物件之間有個紐帶就是“命令”。Nystrom先生定義是:命令是具現化的方法呼叫

Nystrom先生和其他大神舉的例子都是輸入按鍵的這個例子。

就是在unity中,好多人直接就是為案件繫結事件,比如滑鼠左鍵按下就是發射。實際這並沒有什麼不好,可是好多使用者的體驗並不好,因為按鍵功能已經鎖死了。所以命令模式就是在滑鼠左鍵和發射之間設定一箇中間層,起一個紐帶的作用。

這個紐帶可以進行繫結到滑鼠左鍵也可以繫結到滑鼠右鍵上。靈活性可以減低耦合度。

如果理解起來麻煩的話,我就舉個例子吧。

A(一家麵粉作坊)一直只給b(饅頭店)供應麵粉。如果b倒閉的話,A的麵粉就賣不出去,也會跟著倒閉。現在A要是自己開一家麵粉鋪子就不一樣了,b可以來我鋪子買麵粉,C也可以來我鋪子買麵粉。就算B倒閉了,還有D,E……來我這裡買麵粉。

(比喻有點簡陋,要是理解差了,請告知)

當然命令也不可能只有這一部分。寫中間層的程式碼的時候,我們可以把那些命令裝入一個集合(棧、或者佇列裡面吧)。我想這樣可以適用那種建造類的技能吧,比如說紅警建造解放軍、工程師、飛行人,可以把他們的建造命令全都裝進一個容器裡然後等到CD之後呼叫。還有一個AI怪物的技能釋放

當然會有人說用普通那種就可以啊。當然也沒說不可以,只不過這樣更加好管理寫。當然這樣缺點也是有的,加大了類的體積。

相關推薦

unity遊戲設計模式——命令模式自學筆記

在這裡我要感謝下Bob Nystrom先生,正是他的書為我的學習做了鋪墊。 首先我並非科班出身,我是學建築的。在先天上有缺陷,雖然讀了雜七雜八的書,可是並不能對我有實質性的提升。 在工作中看前輩寫的程式碼,我也知道這些設計模式怎麼用,但是很難從裡到外的探究。 自從看了許多大

fireflyLogin網絡工具設計模式——類工廠學習筆記

nbsp dict var class requests result ini 業務層 指向 一、RequestKeyID(業務id) 二、FireflyRequestHelper(對外提供初始化接口,提供網絡回調代理方法,供FireflySafeLoginHelper使用

設計模式--抽象工廠個人筆記

一、抽象工廠的應用場景以及優缺點 1  應用場景:       如果系統需要多套的程式碼解決方案,並且每套的程式碼解決方案中又有很多相互關聯的產品型別,並且在系統中我們可以相互替換的使用一套產品的時候可以使用該模式,客戶端不需要依賴具體的實現。 2 優點

JPEG&H.264的DCT變換與量化自學筆記

JPEG中的DCT變換是浮點運算。存在的缺點: (1)由於在解碼端的浮點運算精度問題,會造成解碼後的資料失配,進而引起漂移; (2)硬體實現中浮點運算的效率較低,導致編碼效率較低。 H.264的整數DCT變換和量化的內容 參考自《新一代視訊壓縮標準H26

Unity菜鳥學做UI筆記

最近在Paws3d學習中心學習unity,感覺漸入佳境。最近接觸了UI部分,做了一些課堂筆記備忘,順便分享。 以下正文內容: 一、總體結構為兩個canvas,兩個canvas始終放置在攝像機上。第一個canvas左上角有時間條(因為專案是跑酷遊戲,所以設計成和血條類似的時間條),左上角還有遊

Unity遊戲設計模式命令模式Command Pattern

        我想大部分的新人跟我一樣剛開始學習Unity的時候,控制人物行的寫法是這樣的。 using UnityEngine; using System.Collections; public class Test : MonoBehaviour { <

Unity遊戲設計模式觀察者模式Observer Pattern

        最近看遊戲設計模式,當看到觀察者模式時被搞得雲裡霧裡的,什麼觀察者,被觀察者,抽象觀察者,抽象被觀察者。聽著這些詞就覺得可怕,其實理解以後還是比較簡單的。         當我們玩遊戲時,經常會出現一些事件,而這個事件可能會影響到許多個模組時就可以用到觀察者

遊戲程式設計模式Game Programming Patterns的 C#&Unity 練習一:命令模式

本人遊戲策劃一枚,開始學習一下游戲程式設計,以便於將來失業了可以做做獨立遊戲。 命令模式 核心描述: 將一個請求(request)封裝成一個物件,從而允許你使用不同的請求,佇列或者日誌將客戶端引數化,同時支援請求操作的撤銷與恢復。 知識點:

Unity遊戲設計模式原型模式Prototype Pattern

        原型模式,顧名思義就是通過物件的原型克隆而產生的新的物件。原型模式在遊戲中運用非常多。怪物,一張地圖上有許許多多的怪物,這些怪物一般都具有共通性,同一種怪物就有可能擁有同樣的模型,同樣的攻擊方式等。即使是不同型別的怪物他們也擁有許多共通性,例如都擁有攻擊力,

設計模式——命令模式C++實現

clear cto ive pre urn bak std oot style 1 [root@ ~/learn_code/design_pattern/19_order]$ cat order.cpp 2 #include <

設計模式-命令模式行為、責任鏈模式行為

tst 是否 return 執行 mman cpp lap 2.0 兩種 0 命令模式和責任鏈模式 命令模式和責任鏈模式是兩種完全相反的模式。 命令模式是需要將請求排隊處理。因此將請求封裝成對象放入隊列。 而責任鏈模式則是,可能同一對象需要多個函數只有一個函數能處理。或是多

重走Java設計模式——命令模式Command Pattern

命令模式 定義 命令模式(Command Pattern)是一種資料驅動的設計模式,它屬於行為型模式。請求以命令的形式包裹在物件中,並傳給呼叫物件。呼叫物件尋找可以處理該命令的合適的物件,並把該命令傳給相應的物件,該物件執行命令。 命令模式設計角色

設計模式——命令模式遙控器與燈

本文首發於cdream的個人部落格,點選獲得更好的閱讀體驗! 歡迎轉載,轉載請註明出處。 本文主要對命令模式進行概述講解,並使用使用遙控器與燈來講述命令模式中呼叫者與接收者的關係。 一、概述 命令模式(英語:Command pattern)是一種設計模式,它嘗試以物件來代表實際行動。命

設計模式-命令模式Command

命令模式:將一個請求封裝為一個物件,從而可用不同的請求對客戶進行引數化;對請求排隊或記錄日誌,以及支援可撤銷的操作,將”發出請求的物件”和”接收與執行這些請求的物件”分隔開來。   角色和職責: 1.Command:    宣告執行操作的介面 2.Concrete Co

深入淺出設計模式——命令模式Command Pattern

轉載自:https://www.cnblogs.com/Bobby0322/p/4195240.html 模式動機 在軟體設計中,我們經常需要向某些物件傳送請求,但是並不知道請求的接收者是誰,也不知道被請求的操作是哪個,我們只需在程式執行時指定具體的請求接收者即可,此

設計模式(行為型模式) ----- 命令模式Command

命令模式很好理解,舉個例子,司令員下令讓士兵去幹件事情,從整個事情的角度來考慮,司令員的作用是,發出口令,口令經過傳遞,傳到了士兵耳朵裡,士兵去執行。這個過程好在,三者相互解耦,任何一方都不用去依賴其他人,只需要做好自己的事兒就行,司令員要的是結果,不會去關注到

設計模式 —— 命令模式Command Pattern

命令模式(Command Pattern) 概念: 概述:在軟體設計中,我們經常會遇到某些物件傳送請求,然後某些物件接受請求後執行,但傳送請求的物件可能並不知道接受請求的物件是誰,執行的是什麼動作。此時可通過 命令模式 來實現,讓傳送者和接受者完全

設計模式——命令模式Command Pattern

一、命令模式的定義 將“請求”封裝成物件,以便使用不同的請求,佇列或者日誌來引數化其他物件。命令模式也支援可撤銷。 命令介面–ICommand public interface ICommand { public void execut

編程經常使用設計模式具體解釋--上篇工廠、單例、建造者、原型

-a 裝飾器模式 nds support art 類的繼承 兩個 開放 lose 參考來自:http://zz563143188.iteye.com/blog/1847029 一、設計模式的分類 整體來說設計模式分為三大類: 創建型模式。共五種:工廠方法模式、抽

設計模式——命令模式

tro dht asf tmc qdt idt faac tms oba   命令模式屬於對象的行為模式。命令模式又稱為行動(Action)模式或交易(Transaction)模式。   命令模式把一個請求或者操作封裝到一個對象中。命令模式允許系統使用不同的請求把客戶端參數