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