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

Unity游戲開(kāi)發(fā)中必備的設(shè)計(jì)模式之外觀模式詳解

 更新時(shí)間:2023年05月06日 09:47:24   作者:iukam  
外觀模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,為復(fù)雜系統(tǒng)提供了簡(jiǎn)單的接口,使得子系統(tǒng)間的通信更加簡(jiǎn)潔和易于維護(hù)。在Unity游戲開(kāi)發(fā)中,外觀模式可以幫助開(kāi)發(fā)者更好地管理游戲?qū)ο蠛徒M件等復(fù)雜結(jié)構(gòu)

一、外觀模式定義

外觀模式(Facade)在GoF中的解釋:為子系統(tǒng)定義一組統(tǒng)一的接口,這個(gè)高級(jí)接口會(huì)讓子系統(tǒng)更容易被使用。

所以,外觀模式的重點(diǎn)在于,它能夠?qū)⑾到y(tǒng)內(nèi)部的互動(dòng)細(xì)節(jié)隱藏起來(lái),并提供一個(gè)簡(jiǎn)單方便的接口。

二、外觀模式說(shuō)明

示意圖表示:整合子系統(tǒng)并提供一個(gè)高級(jí)的界面讓客戶端使用。

其中的參與者具體說(shuō)明:

client(客戶端、用戶)

從原本需要操作多個(gè)子系統(tǒng)改為只需要面對(duì)一個(gè)整合后的界面。

subSystem(子系統(tǒng))

原本會(huì)由不同的客戶端(非同一系統(tǒng)相關(guān))來(lái)操作,改為只會(huì)由內(nèi)部系統(tǒng)之間交互使用。

Facade(統(tǒng)一對(duì)外的界面)

整合所有子系統(tǒng)的接口及功能,并提供高級(jí)界面(或接口)供客戶端使用。

接受客戶端的信息后,將信息傳送給負(fù)責(zé)的子系統(tǒng)。

具體來(lái)說(shuō),外觀模式可以讓客戶端使用簡(jiǎn)單的界面來(lái)操作一個(gè)復(fù)雜的系統(tǒng),并且減少客戶端要與之互動(dòng)的系統(tǒng)數(shù)量,讓客戶端能夠?qū)P奶幚砼c本身有關(guān)的事情。

三、實(shí)現(xiàn)游戲主程序

1、游戲主架構(gòu)設(shè)計(jì)

2、實(shí)現(xiàn)說(shuō)明

子系統(tǒng)對(duì)外接口類(lèi) - PBaseDefenseGame

/// <summary>
/// Describe:整合所有子系統(tǒng)的接口及功能
/// </summary>
public class PBaseDefenseGame
{
	//使用單例
	private static PBaseDefenseGame _instance;
	public static PBaseDefenseGame Instance
	{
		get
		{
			if (_instance == null)			
				_instance = new PBaseDefenseGame();
			return _instance;
		}
	}
	//場(chǎng)景狀態(tài)
	private bool m_bGameOver = false;
    //游戲系統(tǒng)
    private GameEventSystem m_GameEventSystem;
    private CampSystem m_CampSystem;
    private StageSystem m_StageSystem;
    /// <summary>
    /// 初始化
    /// </summary>
    public void Initinal()
    {
    	m_bGameOver = false;
        //游戲系統(tǒng)
        m_GameEventSystem = new GameEventSystem(this);
        m_CampSystem = new CampSystem(this);
        m_StageSystem = new StageSystem(this);
        //...
    }
    //釋放系統(tǒng)游戲
	public void Release()
	{
		// 游戲系統(tǒng)
		m_GameEventSystem.Release();
		m_CampSystem.Release();
		m_StageSystem.Release();
		m_CharacterSystem.Release();
		//...
	}
    /// <summary>
    /// 更新
    /// </summary>
    public void Update()
    {
        //游戲系統(tǒng)更新
        m_GameEventSystem.Update();
        m_CampSystem.Update();
        m_StageSystem.Update();
        //...
    }
    //游戲狀態(tài)
    public bool ThisGameIsOver()
    {
        return m_bGameOver;
    }
    //...
}

戰(zhàn)斗狀態(tài)類(lèi)調(diào)用Facade接口

/// <summary>
/// Describe:戰(zhàn)斗場(chǎng)景
/// </summary>
public class BattleState : ISceneState
{
	public BattleState(SceneStateController Controller) : base(Controller)
	{
		this.StateName = "BattleState";
	}
	// 開(kāi)始
	public override void StateBegin()
	{
		PBaseDefenseGame.Instance.Initinal();
	}
	// 結(jié)束
	public override void StateEnd()
	{
		PBaseDefenseGame.Instance.Release();
	}
	// 更新
	public override void StateUpdate()
	{
		// 游戲更新
		PBaseDefenseGame.Instance.Update();
		// Render由Unity負(fù)責(zé)
		// 游戲是否結(jié)束
		//if (PBaseDefenseGame.Instance.ThisGameIsOver())
		//m_Controller.SetState(new MainMenuState(m_Controller), "MainMenuScene");
	}
}

3、使用外觀模式的優(yōu)點(diǎn)

上述示例中可體現(xiàn):

1、將戰(zhàn)斗狀態(tài)類(lèi)BattleState單一化,讓該類(lèi)只負(fù)責(zé)游戲在“戰(zhàn)斗狀態(tài)”下的功能執(zhí)行及狀態(tài)切換,不用負(fù)責(zé)串接各個(gè)游戲系統(tǒng)的初始化和功能調(diào)用。

2、使戰(zhàn)斗狀態(tài)類(lèi)BattleState減少了不必要的類(lèi)引用即功能整合,因此增加了BattleState類(lèi)被重復(fù)使用的機(jī)會(huì)。

如果外觀模式運(yùn)用得當(dāng)還具有以下優(yōu)點(diǎn):

節(jié)省時(shí)間

比如:Unity組件接口(物理、渲染,UI,粒子等)是使用Facade接口,通過(guò)面板公開(kāi)參數(shù),可通過(guò)調(diào)整相關(guān)參數(shù)數(shù)據(jù)可以輕易得到反饋效果。

易于分工開(kāi)發(fā)

比如,在工作分工配合上,開(kāi)發(fā)者只需要了解對(duì)方負(fù)責(zé)系統(tǒng)的Facade接口,不必深入了解其中運(yùn)作方式。

增加系統(tǒng)的安全性

這里安全性是指系統(tǒng)執(zhí)行時(shí)“意外宕機(jī)或者出錯(cuò)”的情況。比如,一個(gè)功能先通知A去做后通知B做,一旦順序出錯(cuò)會(huì)讓系統(tǒng)初始化失敗或?qū)е洛礄C(jī),所以需要Facade接口類(lèi)來(lái)完成,不應(yīng)該有客戶端去做。

四、結(jié)論

將復(fù)雜的子系統(tǒng)溝通交給單一的一個(gè)類(lèi)負(fù)責(zé),并提供單一界面給客戶端使用,使客戶減少對(duì)系統(tǒng)的耦合度使外觀模式(Facade)的優(yōu)點(diǎn)。

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

相關(guān)文章

  • C#9.0 新特性簡(jiǎn)介

    C#9.0 新特性簡(jiǎn)介

    這篇文章主要介紹了C#9.0 新特性簡(jiǎn)介,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C# 抓圖服務(wù)的實(shí)現(xiàn)

    C# 抓圖服務(wù)的實(shí)現(xiàn)

    這篇文章主要介紹了C# 抓圖服務(wù)的實(shí)現(xiàn),幫助大家更好的利用c#處理窗口,進(jìn)行截圖,感興趣的朋友可以了解下
    2021-01-01
  • 用C#編寫(xiě)ActiveX控件(二)

    用C#編寫(xiě)ActiveX控件(二)

    用C#編寫(xiě)ActiveX控件(二)...
    2007-03-03
  • C#代碼設(shè)置開(kāi)機(jī)啟動(dòng)示例

    C#代碼設(shè)置開(kāi)機(jī)啟動(dòng)示例

    本文介紹了使用C#代碼設(shè)置開(kāi)機(jī)啟動(dòng)的方法,原理就是在注冊(cè)表啟動(dòng)項(xiàng)里添加一項(xiàng)
    2014-01-01
  • .NET/C#實(shí)現(xiàn)識(shí)別用戶訪問(wèn)設(shè)備的方法

    .NET/C#實(shí)現(xiàn)識(shí)別用戶訪問(wèn)設(shè)備的方法

    這篇文章主要介紹了.NET/C#實(shí)現(xiàn)識(shí)別用戶訪問(wèn)設(shè)備的方法,結(jié)合實(shí)例形式分析了C#識(shí)別用戶訪問(wèn)設(shè)備的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • C#中ToString數(shù)據(jù)類(lèi)型格式大全(千分符)

    C#中ToString數(shù)據(jù)類(lèi)型格式大全(千分符)

    這篇文章主要介紹了C#中ToString數(shù)據(jù)類(lèi)型格式大全 千分符,需要的朋友可以參考下
    2017-02-02
  • C#獲取并修改文件擴(kuò)展名的方法

    C#獲取并修改文件擴(kuò)展名的方法

    這篇文章主要介紹了C#獲取并修改文件擴(kuò)展名的方法,實(shí)例分析了C#編程方式修改文件擴(kuò)展名的技巧,涉及Path類(lèi)的使用方法,需要的朋友可以參考下
    2015-04-04
  • C#更改tabControl選項(xiàng)卡顏色的方法

    C#更改tabControl選項(xiàng)卡顏色的方法

    這篇文章主要介紹了C#更改tabControl選項(xiàng)卡顏色的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了C#更改tabControl選項(xiàng)卡顏色的的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-03-03
  • C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標(biāo)

    C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標(biāo)

    這篇文章主要介紹了C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標(biāo),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#對(duì)集合進(jìn)行排序

    C#對(duì)集合進(jìn)行排序

    這篇文章介紹了C#對(duì)集合進(jìn)行排序的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03

最新評(píng)論

榆林市| 紫云| 鄂尔多斯市| 泰顺县| 岫岩| 临沧市| 土默特左旗| 于都县| 修水县| 乌拉特中旗| 怀集县| 临颍县| 胶州市| 绥芬河市| 克什克腾旗| 东港市| 巴中市| 张掖市| 牟定县| 河间市| 姜堰市| 寿宁县| 元谋县| 嵩明县| 宜兴市| 治多县| 自贡市| 泰州市| 镇原县| 宁河县| 平凉市| 阜新市| 于都县| 十堰市| 内江市| 开鲁县| 化德县| 鹰潭市| 修武县| 武陟县| 广昌县|