Cocos Creator 實現大廳 子遊戲模式

2022-08-28 11:54:13 字數 1909 閱讀 5334

之前一直負責的是cocos2dx-lua的開發,lua作為指令碼語言,非常適合做熱更新及大廳+子遊戲模式的開發。而cocos creator使用的是js或者ts,作為指令碼語言也是很方便做熱更新的,但是js編譯是把所有的指令碼編譯成乙個單獨的js檔案,如果不做調整,會導致所有的大廳+遊戲**編譯成乙個單獨的js檔案,是不太方便做成大廳+子遊戲的模式的,這裡要討論的就是如何調整,以做成大廳+子遊戲的模式。

首先就是要將大廳、子遊戲分開來構建了,要不就是建立單獨的大廳+子遊戲工程,要不就是將大廳或者子遊戲的**、資源拷貝到乙個構建工程,然後用命令列工具或者直接使用gui工具構建。我這邊沒有單獨分開建立工程,選擇的是在構建的時候通過指令碼拷貝相關的資源,然後單獨構建。

//

首先還是要設定好搜尋路徑

var searchpaths =jsb.fileutils.getsearchpaths();

searchpaths.unshift(cc.js_dir);

jsb.fileutils.setsearchpaths(searchpaths);

//判斷是否已經載入過子遊戲的setting

if (!cc.gamesetting)

}else

//合併assettypes

var gameassettypes =settings.assettypes;

settings.assettypes =basesetting.assettypes;

if (gameassettypes &&settings.assettypes)

}for (var uuidkey in

settings.rawassets.assets) }}

}

//調整資源配置

for (var assetkey in

basesetting.packedassets)

//動態資源合併

for (var uuidkey in

basesetting.rawassets.assets)

//場景合併

for (var scenekey in

basesetting.scenes)

}//uuid合併

for (var uuidkey in

basesetting.uuids)

}

上述**是在論壇網友提供的demo基礎上進行了部分調整,核心的邏輯還是一致的:主要就是讀取對應子遊戲的setting檔案,然後合併到大廳的setting中,建立好子遊戲資源的uuid對應關係,主要就能在遊戲中引入對應的遊戲資源。

論壇網友提供的demo中,從子遊戲回到大廳,需要再引入乙份獨立的js檔案。但是我的理解是,在啟動大廳的時候已經將大廳的setting加入到記憶體中了,資源和uuid的對應關係已經建立,這個時候其實已經沒有必要再重複引入一次大廳的setting配置,再來合併。實際專案上,我也是按照我的理解,沒有再單獨的引入js檔案實現從子遊戲回到大廳,目前也暫時沒有碰到問題。

cc.class()

gammodel是大廳工程的**,在開發的過程中,因為子遊戲和大廳在乙個工程,這樣直接使用是沒有問題的。如果將子遊戲單獨打包,在構建的過程中會報錯,不過還是能構建成功,但是在執行的時候這個指令碼元件就不會繫結到對應的節點上去,所以應該調整一下:

cc.class(

這樣構建的過程中不會報錯,指令碼元件能正常的繫結到對應的節點上去。執行過程中因為已經載入了大廳的**,所以這個三目運算的結果是取後面的bg.gamemodel。

實現環境:cocos creator 2.0.9 版本。之前使用2.10版本,同樣的**構建的工程,在win32模擬器上就會一直報錯,自帶模擬器對應的src目錄下的modular.js會出現錯誤,後來換成2.0.9版本,自編譯win32工程,再用模擬器執行就沒有問題了。在安卓和ios上到是都正常的。

Cocos Creator 實現背景無限滾動效果

5 效果展示 6 結束語 我們在製作一些2d遊戲時經常需要用到背景的滾動效果來做一些文章。那麼既然背景滾動,那麼我們總不能做乙個無限長的背景來移動吧,那怎麼辦呢!事實上,解決方案不止一種,我們這裡說一下兩張背景圖無限滾動的方法。簡單來說就是場景中兩張背景交替的在移動,在遊戲的每幀中不斷更新的位置,以...

cocos creator 遊戲UI揹包實現

首先建立乙個精靈節點使用背景圖 然後新增關閉 整理 使用按鈕 滾動檢視 將圖示,格仔和整個介面作為預製體 載入後 用instantiate 函式生成多個格仔 然後把圖示貼上去 cc.class onclickbutton event,data else if data reset else if d...

cocos creator 十二 問題

1 socket為什麼不能使用 2 cocos類之攝像機使用問題 1 在使用socket為什麼不能使用 if cc.sys.isnative opts this sio window.io connect this.ip opts this sio.on connect function data ...