【Unity3D】常用設(shè)計(jì)模式

1、單例模式:

單例僅允許被實(shí)例一次,這就保證了他在各個(gè)程序模塊間的唯一性。

創(chuàng)建一個(gè)名為ModelLocator的C#腳本:

[cpp]view plaincopy

usingUnityEngine;

usingSystem.Collections;

publicclassModelLocator?{

publicstring?myString;

privatestaticModelLocator?instance;

publicstaticModelLocator?getInstance{

get{

if(instance==null){

instance=newModelLocator();

}

returninstance;

}

}

}

怎么使用呢?如下面一個(gè)MonoBehaviour 成為場景中對象的行為后,他就會一直訪問這個(gè)myString的變量了:

[cpp]view plaincopy

usingUnityEngine;

usingSystem.Collections;

publicclassAction1?:?MonoBehaviour?{

voidStart?()?{

}

voidUpdate?()?{

if(ModelLocator.getInstance.myString!=null?&&?ModelLocator.getInstance.myString!=""){

//do?somethings;

}

}

}

上面兩個(gè)腳本是什么意思呢,第一個(gè)腳本即使用了單例模式的腳本,在第二個(gè)腳本中訪問其變量的時(shí)候,首先就會判斷其是否被初始化,初始化就直接返回其句柄,如果沒有就new一次,這樣就可以保證第一個(gè)腳本的實(shí)例化只有一次,這也就是單例模式的核心思想。

什么時(shí)候需要使用單例模式呢?正如它的名字一樣,你認(rèn)為一些東西在整個(gè)游戲中只有一個(gè)而你又想可以方便地隨時(shí)訪問它,這時(shí)你就可以考慮單例模式了。例如,你的游戲可能需要一個(gè)管理音樂播放的腳本,或者一個(gè)管理場景切換的腳本,或者一個(gè)管理玩家信息的通用腳本,又或者是管理游戲中各種常用UI的腳本。

2、單例模式在腳本中的應(yīng)用:

全局腳本:所有場景都只能與這個(gè)唯一的全局腳本交互。

單例腳本:每一個(gè)場景里面有且只有一個(gè),場景里面的腳本都只能和這個(gè)腳本交互,和別的腳本之間做間接交互。

3、MVC模式:

MVC框架模式,相信很多人都不會陌生,數(shù)據(jù)-控制-顯示分離的工作方式或者叫做代碼結(jié)構(gòu)會使軟件(游戲)的結(jié)構(gòu)清晰化,邏輯更明了。

M(Model)數(shù)據(jù)層,兩個(gè)用途:1保存數(shù)據(jù);2發(fā)送數(shù)據(jù)更新信息;

V(View)視圖層,兩個(gè)用途:1接受用戶從界面上的操作;2根據(jù)M層的數(shù)據(jù)顯示相應(yīng)的界面;

C(Controller)控制層,兩個(gè)用途:1處理和界面無關(guān)的代碼邏輯;2接受和處理網(wǎng)絡(luò)數(shù)據(jù);

我們來看以上模型:

a. 用戶點(diǎn)擊->UI響應(yīng)控制->調(diào)用M更改數(shù)據(jù)->發(fā)送更新界面消息->V接收消息->更新界面

b. 用戶點(diǎn)擊->UI響應(yīng)控制->發(fā)送界面跳轉(zhuǎn)消息->V接收消息->更新界面

c. 用戶點(diǎn)擊->UI響應(yīng)控制->UI自消化

其實(shí),一般的界面模塊,用以上的模型就足夠了。但有些模塊比較復(fù)雜,需要不斷的與數(shù)據(jù)和界面交互,這時(shí)候C才有意義。

先就這些,后面學(xué)習(xí)到了,再補(bǔ)充完善。

0

0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • 一、設(shè)計(jì)模式的分類 總體來說設(shè)計(jì)模式分為三大類: 創(chuàng)建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者...
    lichengjin閱讀 1,002評論 0 8
  • //我所經(jīng)歷的大數(shù)據(jù)平臺發(fā)展史(三):互聯(lián)網(wǎng)時(shí)代 ? 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃囈語閱讀 51,712評論 10 199
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,693評論 19 139
  • 失戀的第三天,林小姐特意早起化了個(gè)妝,搭配了一身不錯(cuò)的衣服,穿上了新高跟鞋去上課。 又是滿課的一個(gè)星期,忙都忙...
    林臺閱讀 440評論 0 0

友情鏈接更多精彩內(nèi)容