最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity游戲開(kāi)發(fā)中的設(shè)計(jì)模式之策略模式

 更新時(shí)間:2023年05月05日 11:28:27   作者:iukam  
策略模式是Unity游戲開(kāi)發(fā)中常用的設(shè)計(jì)模式之一,用于封裝一系列算法或行為,并使這些算法或行為可以相互替換。通過(guò)策略模式,可以在運(yùn)行時(shí)動(dòng)態(tài)地選擇算法或行為,實(shí)現(xiàn)游戲中的多樣性和可擴(kuò)展性。常見(jiàn)的應(yīng)用包括AI行為、武器攻擊、移動(dòng)方式等

一、使用策略模式的原因

在設(shè)計(jì)游戲角色傷害時(shí),因角色差異而使用不同的計(jì)算公式,如何解決,同一計(jì)算方式分布在不同的角色中、新增角色增加維護(hù)等問(wèn)題,可以使用策略模式解決。

二、策略模式的定義

GoF對(duì)策略模式的解釋:定義一組算法,并封裝每個(gè)算法,讓它們可以彼此交換使用。策略模式讓這些算法在客戶端使用它們時(shí)能更加獨(dú)立。

策略模式在處理所謂的“算法時(shí)”,著重于細(xì)節(jié),至于計(jì)算方式及規(guī)則,則不用去理會(huì)。

三、策略模式的使用說(shuō)明

參與者說(shuō)明:

  • Strategy(策略接口類):提供“策略客戶端”可以使用的方法。
  • ConcreteStrategyA~C(策略實(shí)現(xiàn)類): 不同算法的實(shí)現(xiàn)。
  • Context(策略客戶端):擁有一個(gè)Strategy類的對(duì)象引用,并且通過(guò)對(duì)象引用獲取想要的計(jì)算結(jié)果。

四、策略模式的實(shí)現(xiàn)范例

算法的共享接口:

 	/// <summary>
    /// 算法的共享接口
    /// </summary>
    public abstract class Strategy
    {
        public abstract void AlgorithmInterface();
    }

實(shí)現(xiàn)各種算法:

   /*  各類算法的實(shí)現(xiàn) */
    /// <summary>
    /// 算法 A
    /// </summary>
    public class ConcreteStrategyA : Strategy
    {
        public override void AlgorithmInterface()
        {
            //print
        }
    }
    /// <summary>
    /// 算法 B
    /// </summary>
    public class ConcreteStrategyB : Strategy
    {
        public override void AlgorithmInterface()
        {
            //print
        }
    }
    /// <summary>
    /// 算法 C
    /// </summary>
    public class ConcreteStrategyC : Strategy
    {
        public override void AlgorithmInterface()
        {
            //print
        }
    }

擁有Strategy對(duì)象的客戶端

/// <summary>
    /// 擁有Strategy 對(duì)象的客戶端
    /// </summary>
    public class Context
    {
        Strategy strategy = null;
        /// <summary>
        /// 設(shè)置算法
        /// </summary>
        /// <param name="strategy"></param>
        public void SetStrategy(Strategy strategy)
        {
            strategy = strategy;
        }
        /// <summary>
        ///執(zhí)行當(dāng)前的算法
        /// </summary>
        public void ContextInterface()
        {
            strategy.AlgorithmInterface();
        }
    }

五、中介者模式的優(yōu)點(diǎn)和注意事項(xiàng)

優(yōu)點(diǎn):

  • 讓角色屬性變得好維護(hù);
  • 不必在針對(duì)角色類型編寫程序代碼;
  • 計(jì)算公式的替換更為方便;

缺點(diǎn):

計(jì)算公式時(shí)的參數(shù)設(shè)置,需要外界提供相關(guān)信息作為計(jì)算依據(jù);

與狀態(tài)模式的差別:

都?xì)w類在行為模式(Behavior Patterns)分類下,都由一個(gè)Context類來(lái)維護(hù)對(duì)象的引用。

  • 差異: State是在一群狀態(tài)中進(jìn)行切換,狀態(tài)之間有對(duì)應(yīng)和連接的關(guān)系,而Strategy是由一群沒(méi)有任何關(guān)系的類組成,不知彼此的存在。
  • State受限于狀態(tài)機(jī)的切換規(guī)則,在設(shè)計(jì)初期就可能定義所有狀態(tài),后期追加,不是想加入就加入,受限于現(xiàn)有狀態(tài)關(guān)聯(lián);而Strategy是由封裝計(jì)算算法而形成的一種設(shè)計(jì)模式,算法之間不存在任何依賴關(guān)系,可以隨時(shí)加入。

六、策略模式的總結(jié)

將復(fù)雜的計(jì)算公式從客戶端中獨(dú)立出來(lái)稱為一個(gè)群組,之后客戶端可以按照情況來(lái)決定使用的計(jì)算公式策略,既提高系統(tǒng)應(yīng)用的靈活程度,也強(qiáng)化了系統(tǒng)中對(duì)所有計(jì)算策略的維護(hù)方式。

后續(xù)開(kāi)發(fā)人員很容易找到相關(guān)計(jì)算公式的差異,同時(shí)修改點(diǎn)也會(huì)縮小到計(jì)算公式本身,也不會(huì)影響到使用的客戶端。

到此這篇關(guān)于Unity游戲開(kāi)發(fā)中的設(shè)計(jì)模式之策略模式的文章就介紹到這了,更多相關(guān)Unity策略模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Unity Shader實(shí)現(xiàn)徑向模糊效果

    Unity Shader實(shí)現(xiàn)徑向模糊效果

    這篇文章主要為大家詳細(xì)介紹了Unity Shader實(shí)現(xiàn)徑向模糊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C#創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)方法

    C#創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • C#查詢SqlServer數(shù)據(jù)庫(kù)并返回單個(gè)值的方法

    C#查詢SqlServer數(shù)據(jù)庫(kù)并返回單個(gè)值的方法

    這篇文章主要介紹了C#查詢SqlServer數(shù)據(jù)庫(kù)并返回單個(gè)值的方法,涉及C#操作SQLServer數(shù)據(jù)庫(kù)查詢的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C#從數(shù)據(jù)庫(kù)讀取圖片并保存的兩種方法

    C#從數(shù)據(jù)庫(kù)讀取圖片并保存的兩種方法

    這篇文章主要介紹了C#從數(shù)據(jù)庫(kù)讀取圖片并保存的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • C#操作注冊(cè)表的方法

    C#操作注冊(cè)表的方法

    這篇文章介紹了C#操作注冊(cè)表的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#文件操作的簡(jiǎn)單實(shí)例

    C#文件操作的簡(jiǎn)單實(shí)例

    這篇文章主要介紹了C#文件操作的簡(jiǎn)單實(shí)例,需要的朋友可以參考下
    2014-02-02
  • c# 數(shù)據(jù)庫(kù)的 sql 參數(shù)封裝類的編寫

    c# 數(shù)據(jù)庫(kù)的 sql 參數(shù)封裝類的編寫

    c# 數(shù)據(jù)庫(kù)的 sql 參數(shù)封裝類的編寫...
    2007-12-12
  • C#日歷樣式的下拉式計(jì)算器實(shí)例講解

    C#日歷樣式的下拉式計(jì)算器實(shí)例講解

    如果我們正在做一個(gè)類似于庫(kù)存控制和計(jì)費(fèi)系統(tǒng)的項(xiàng)目,有些部分可能必須手動(dòng)計(jì)算數(shù)值。因此,用戶就不得不使用計(jì)算器得到結(jié)果,再填入到輸入字段中,或者在工作窗口上單獨(dú)打開(kāi)一個(gè)計(jì)算器窗口??傊鞣N不便和麻煩。
    2015-09-09
  • unity實(shí)現(xiàn)攝像頭跟隨

    unity實(shí)現(xiàn)攝像頭跟隨

    把這個(gè)腳本賦給你的攝像機(jī),再把游戲角色賦給character變量,之后就能實(shí)現(xiàn)攝像機(jī)平滑的跟隨player在地球的任一角落了。有需要的小伙伴可以參考下。
    2015-03-03
  • C#流類FileStream學(xué)習(xí)使用筆記

    C#流類FileStream學(xué)習(xí)使用筆記

    這篇文章主要介紹了C#流類FileStream學(xué)習(xí)使用筆記,本文直接給出示例代碼,代碼中每一步都有詳細(xì)注釋,需要的朋友可以參考下
    2015-06-06

最新評(píng)論

扎囊县| 连山| 益阳市| 连平县| 衢州市| 和田县| 微博| 泰安市| 门源| 凌海市| 林甸县| 北安市| 聂荣县| 交城县| 乌苏市| 庄浪县| 阿巴嘎旗| 嵊州市| 迁西县| 邛崃市| 于都县| 池州市| 玉田县| 武鸣县| 望奎县| 介休市| 廊坊市| 开平市| 巩留县| 五台县| 新密市| 同德县| 绥化市| 东山县| 天峨县| 太康县| 贺州市| 宁南县| 班玛县| 涪陵区| 抚远县|