国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 詳解CocosCreator MVC架構(gòu)

詳解CocosCreator MVC架構(gòu)

2022-03-03 16:51houjia159 js教程

這篇文章主要介紹了CocosCreator MVC架構(gòu),同學們在制作游戲過程中,盡量使用一些架構(gòu),會避免很多問題

概述

這一篇將介紹在游戲客戶端常用的架構(gòu)MVC架構(gòu)。一個游戲的MVC如下劃分:

M:1)單例全局的數(shù)據(jù)中心World,所有游戲模塊的數(shù)據(jù)在World中有入口,2)各個模塊自己的數(shù)據(jù)結(jié)構(gòu)。

V:1)通過creator預制體制作的UI界面、場景,2)各個界面顯示邏輯的ViewCtrl

C:1)全局的MainCtrl,2)各個模塊的業(yè)務邏輯類ModuleCtrl

具體模塊

先介紹M部分。由于一個模塊的數(shù)據(jù),在其他模塊也有訪問的需求,例如好友模塊,在聊天的時候也需要訪問,在排行榜里需要訪問。數(shù)據(jù)應該有一個單例全局的數(shù)據(jù)中心類World,所有游戲模塊的數(shù)據(jù)類在World中有入口。這些數(shù)據(jù)可以在玩家登錄后從服務器獲取并設(shè)置。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
export class World {
    private static instance: World = null;
 
    private _test: TestData = null;
 
    /**
     * 單例模式
     */
    private constructor() {
 
    }
 
    /**
     * 獲取實例
     */
    public static get inst(): World {
        if (!World.instance) {
            World.instance = new World();
        }
 
        return World.instance;
    }
 
    // FOR TEST
    public set test(val: TestData) {
        this._test = val;
    }
 
    public get test(): TestData {
        return this._test;
    }
}

這樣模塊間可以獨立設(shè)計自己的數(shù)據(jù)結(jié)構(gòu),通過發(fā)送消息請求對應模塊的ModuleCtrl更改,通過World讀取。

詳解CocosCreator MVC架構(gòu)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export class TestData {
    private _text: string = null;
 
    public constructor() {
 
    }
 
    public set text(val: string) {
        this._text = val;
    }
 
    public get text(): string {
        return this._text;
    }
}

數(shù)據(jù)的更新時可以派發(fā)消息,界面可以監(jiān)聽消息做刷新。

下面介紹界面和腳本代碼的關(guān)聯(lián)。前面篇章中介紹過,cocos creator是基于組件模式。我將每個ui界面都做成一個預制體,每個預制體都可以添加一個腳本組件,用于控制這個界面的顯示邏輯。

詳解CocosCreator MVC架構(gòu)

詳解CocosCreator MVC架構(gòu)

在彈窗管理里提到我設(shè)計了一個繼承cc.Component的類叫ViewCtrl,所有界面的顯示邏輯類都繼承ViewCtrl,并添加到對應的界面預制體。前面提到數(shù)據(jù)更新時會派發(fā)消息,ViewCtrl監(jiān)聽數(shù)據(jù)更新消息,刷新關(guān)聯(lián)的界面。

?
1
2
3
4
5
const {ccclass, property} = cc._decorator;
 
@ccclass
export default class TestViewCtrl extends ViewCtrl {
}

ViewCtrl只處理界面的顯示邏輯,不處理數(shù)據(jù)業(yè)務邏輯,模塊的數(shù)據(jù)業(yè)務邏輯由該模塊的ModuleCtrl處理。ViewCtrl響應用戶操作,派發(fā)消息,ModuleCtrl監(jiān)聽消息處理。大部分模塊的ModuleCtrl主要做網(wǎng)絡通信,和對本模塊緩存數(shù)據(jù)的修改。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
export class TestCtrl {
 
    public constructor() {
 
    }
 
    public init(): void {}
 
    public start(): void {
        NotifyCenter.addListener(MSG_TEST_HTTP, (src: any, data: any) => {
            this.testHttp();
        }, this);
    }
 
    public testHttp(): void {
        let data = {
            mod: 1, // 模塊
            cmd: 1, // 命令
        }
 
        let params: HttpReq = {
            path: "",
            method: HTTP_METHOD_GET
        }
 
        MainCtrl.inst.http.sendData(data, params, (data: NetData) => {
            World.inst.test = new TestData();
            World.inst.test.text = "123";
        }, (code: number, reason: string) => {});
    }
}

前面提到,C層還有一個全局單例的MainCtrl。該類主要負責模塊注冊、提供全局的操作接口(例如界面/場景的顯隱)、網(wǎng)絡通信處理。

以上就是詳解CocosCreator MVC架構(gòu)的詳細內(nèi)容,更多關(guān)于CocosCreator MVC架構(gòu)的資料請關(guān)注服務器之家其它相關(guān)文章!

原文鏈接:https://blog.csdn.net/houjia159/article/details/108450381

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美精品一区二区三区蜜桃视频 | 在线观看一级黄色片 | 极品国产在线 | 国产欧美综合视频 | 亚洲a在线播放 | 亚洲另类视频 | 欧美二区三区 | 国产97在线 | 免费 | 免费黄色在线观看 | 午夜在线观看影院 | 亚洲永久免费视频 | 国产精品一区二区久久久 | 亚洲一区二区三区中文字幕 | 91精品久久久久久久 | av一区二区三区 | 一级片在线播放 | 国产日韩欧美在线 | 日韩中文字幕在线观看 | 在线午夜 | 美女久久 | 玖玖国产精品视频 | 欧美精三区欧美精三区 | 欧美亚洲在线 | 久久香视频| 91cn在线观看 | 亚洲性生活免费视频 | 国产亚洲欧美另类一区二区三区 | 伊人一区二区三区 | 中国女人黄色大片 | 美女久久久久 | 一区在线视频 | 美女福利网站 | 伊人激情综合网 | 精精国产xxxx视频在线观看 | 在线免费看黄 | 国产高清在线精品一区二区三区 | av私库在线观看 | 国产宾馆自拍 | 97精品国产 | 午夜影晥| 久久xxx |