【Unity3D】常用設計模式

【Unity3D】常用設計模式


1、單例模式:
單例僅允許被實例一次,這就保證了他在各個程序模塊間的唯一性。
創建一個名爲ModelLocator的C#腳本:

using UnityEngine;
using System.Collections;

public class ModelLocator {

    public string myString;
    private static ModelLocator instance;
    public static ModelLocator getInstance{
    get{
        if(instance==null){
            instance=new ModelLocator();
        }
        return instance;
        }
    }
}

怎麼使用呢?如下面一個MonoBehaviour 成爲場景中對象的行爲後,他就會一直訪問這個myString的變量了:

using UnityEngine;
using System.Collections;

public class Action1 : MonoBehaviour {

    void Start () {
          
    }
    
    void Update () {
        if(ModelLocator.getInstance.myString!=null && ModelLocator.getInstance.myString!=""){
            //do somethings;
        }
    }
}

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

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

2、單例模式在腳本中的應用:
全局腳本:所有場景都只能與這個唯一的全局腳本交互。
單例腳本:每一個場景裏面有且只有一個,場景裏面的腳本都只能和這個腳本交互,和別的腳本之間做間接交互。

3、MVC模式:

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

M(Model)數據層,兩個用途:1保存數據;2發送數據更新信息;

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

C(Controller)控制層,兩個用途:1處理和界面無關的代碼邏輯;2接受和處理網絡數據;


我們來看以上模型:
a. 用戶點擊->UI響應控制->調用M更改數據->發送更新界面消息->V接收消息->更新界面
b. 用戶點擊->UI響應控制->發送界面跳轉消息->V接收消息->更新界面
c. 用戶點擊->UI響應控制->UI自消化
其實,一般的界面模塊,用以上的模型就足夠了。但有些模塊比較複雜,需要不斷的與數據和界面交互,這時候C纔有意義。


先就這些,後面學習到了,再補充完善。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章