五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity框架設(shè)計(jì):常用設(shè)計(jì)模式之工廠模式

2023-01-03 16:30 作者:博毅創(chuàng)為  | 我要投稿


工廠模式(Factory Pattern)是游戲開發(fā)中最常用的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。在工廠模式中,我們?cè)趧?chuàng)建對(duì)象時(shí)不會(huì)對(duì)用戶暴露創(chuàng)建邏輯,并且是通過使用一個(gè)共同的接口來指向新創(chuàng)建的對(duì)象。

先來看一個(gè)生活中的真實(shí)的案例,某個(gè)品牌的汽車制造工廠,對(duì)外提供生產(chǎn)這個(gè)品牌的不同型號(hào)汽車的服務(wù)。外界只要下一個(gè)”汽車型號(hào)”, 工廠可以根據(jù)型號(hào)構(gòu)建出來不同型號(hào)的汽車。這樣外界不用關(guān)心工廠內(nèi)部是怎么運(yùn)作的,當(dāng)用戶需要某個(gè)型號(hào)的汽車的時(shí)候調(diào)用接口就可以了,同時(shí)內(nèi)部工廠的機(jī)制,可以任意的修改,比如增加了一個(gè)新的汽車型號(hào)的服務(wù)等。

通過上面的例子,我們來分析一下工程模式的幾個(gè)重要的元素,掌握這幾個(gè)元素,你就可以非常方便的在你的游戲項(xiàng)目中使用工廠模式。

首先是要定義和規(guī)劃我們工廠模式創(chuàng)建出來的對(duì)象,我們可以成為”工廠元素”。這些工廠元素都屬于不同的類型(上面例子中的不同型號(hào)的某品牌汽車),這些類型都屬于同一個(gè)基類(某品牌汽車,具有汽車的通用功能)。所以工廠元素的設(shè)計(jì)規(guī)劃就是 基類+子類的模式,基類提供對(duì)外使用的接口(如汽車的功能), 而子類定義具體的不同的類型。如果要新增一種類型,那么只要繼承自這個(gè)基類就可以了。

工廠元素設(shè)計(jì)好了以后,接下來就是提供一個(gè)”工廠構(gòu)造接口”來構(gòu)造不同的類型的實(shí)例,一般我們會(huì)提供一個(gè) Create的接口,用戶傳遞一個(gè)標(biāo)識(shí)類型的參數(shù),Create里面根據(jù)用戶傳遞的類型來new 不同的子類實(shí)例,返回一個(gè)基類的引用, 讓基類指向子類的實(shí)例。如圖:

?

用戶就可以基于基類來管理子類的實(shí)例。當(dāng)我們新加一種類型的時(shí)候,只要繼承自基類,然后在Create接口加一個(gè)類型來構(gòu)造這個(gè)新類的實(shí)例就可以了。

?

介紹完工廠模式后,相信大家對(duì)工廠模式已經(jīng)有所了解了,接下來我們來通過地圖上戰(zhàn)斗單元的設(shè)計(jì)來講解一下我們整個(gè)戰(zhàn)斗系統(tǒng)中使用工廠模式來處理敵人小怪。

步驟1:定義一個(gè)怪物的基類:

class BaseEnemy extends MonoBehaviour { //攻擊接口 // end // 行走接口 // end …. }

步驟2: 定義具體戰(zhàn)斗單元的子類FlyEnemy, MonestEnemy , 重載實(shí)現(xiàn)具體的接口

class FlyEnemy extends Enemy { // … } class MonestEnemy extends Enemy { // … }

步驟3: 編寫一個(gè)工廠模式的Create接口

class EnemyFactory { ?public static BaseEnemy AddEnemyComponent(GameObject obj, int enmeyType) { ? ?switch(enemyType) { ? ? ?case eFlyEnemy: ? ? ?return obj.AddComponent<FlyEnmey>(); ? ? ?break; ? ? ?case eMonestEnemy: ? ? ?return obj.AddComponent<MonestEnemy> (); ? ? ?break; ? ?… ? ?} ?} }

?

步驟4: 根據(jù)Excel表格描述與地圖數(shù)據(jù)來生成敵人。

敵人類型描述表,如圖:

地圖數(shù)據(jù)描述表,如圖:

我們編寫地圖管理代碼,讀取地圖表格,讀取到地圖上怪物的類型,資源路徑,位置,縮放,旋轉(zhuǎn),然后我們根據(jù)描述來在地圖上創(chuàng)建怪物,代碼如下:

GameObject obj = GameObject.Instantiate(資源路徑對(duì)應(yīng)的預(yù)制體);

obj.transform.position = new Vector3(配置表讀取的位置);

// 通過工廠模式把敵人構(gòu)建出來

BaseEenemy enemy = EnemyFactory.AddEnemyComponent(obj, 配置表讀取的type);

?

這樣我們就把地圖上的不同的敵人都構(gòu)建與創(chuàng)建出來了,如果有新的敵人,這邊的邏輯都不用改,只要加一種類型,加一個(gè)子類就可以了。這就是工廠模式在游戲中的設(shè)計(jì),很有用,大家要多多體會(huì)實(shí)踐。

?

今天的分享就到這里了,關(guān)注我,可以獲得更多的技巧。

附:視頻教

https://www.bycwedu.com/promotion_channels/2146264125?



Unity框架設(shè)計(jì):常用設(shè)計(jì)模式之工廠模式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
潮州市| 二连浩特市| 灵寿县| 高碑店市| 孟连| 峡江县| 育儿| 宁化县| 鹤岗市| 韶山市| 象州县| 嘉定区| 玉溪市| 丹江口市| 迭部县| 铁岭市| 公安县| 共和县| 林西县| 平和县| 麻城市| 项城市| 南城县| 岳池县| 绥阳县| 江口县| 威信县| 射洪县| 犍为县| 惠东县| 隆尧县| 蓝田县| 盐津县| 富蕴县| 勐海县| 文登市| 翼城县| 麟游县| 信丰县| 惠水县| 阿巴嘎旗|