如何在CocosCreator中利用常駐節(jié)點(diǎn)做圖層管理
CocosCreator版本:2.3.4
一般游戲都有圖層管理,比如
- sceneLayer 場景層
- panelLayer 彈框?qū)?/li>
- tipLayer 提示框?qū)?/li>
cocos里的場景不是持久化的,每次切換都會自動destroy,如果在場景上放這些圖層,那么每個scene都要放一遍?然后再獲取,這樣很麻煩。
加載場景使用的是cc.director.loadScene,scene的容器node貌似是director上的一個nodeActivator
現(xiàn)在如果不考慮scene的容器或者cocos的頂層容器。我想一想兩種圖層管理的方法。
一、只有一個scene
整個游戲一個scene,就是游戲入口的scene,在這個scene上放sceneLayer等圖層的node,這個入口scene相當(dāng)于egret和laya的stage。
然后所有場景scene和彈框模塊,都做成預(yù)制件prefab,每次顯示都addChild到入口scene的相應(yīng)圖層上就行了。
二、使用常駐節(jié)點(diǎn)
比如我在場景1,放置sceneLayer等圖層。為了方便顯示,我每個圖層加了個單色。
常駐節(jié)點(diǎn)必須在根節(jié)點(diǎn)下,也就是和canvas同級。把3個圖層設(shè)置為常駐節(jié)點(diǎn)。
onLoad(){ cc.game.addPersistRootNode(cc.find("sceneLayer")); cc.game.addPersistRootNode(cc.find("panelLayer")); cc.game.addPersistRootNode(cc.find("tipLayer")); }
然后切換場景,在新場景中,仍然可以顯示并獲取到sceneLayer等圖層。
onLoad(){ console.log(cc.find("sceneLayer")); //輸出sceneLayer的cc.Node }
利用常駐節(jié)點(diǎn),我們可以在入口場景中放置sceneLayer等圖層。用圖層管理類保存引用。
三、最佳實(shí)踐
圖層管理類,單例
export default class LayerManager extends cc.Component { private static instance:LayerManager; public static ins():LayerManager{ if(this.instance == null){ this.instance = new LayerManager(); } return this.instance; } public panelLayer:cc.Node; public tipLayer:cc.Node; }
在入口場景中設(shè)置常駐節(jié)點(diǎn)layer, 用圖層管理類保存引用。以備之后使用。
@ccclass export default class Helloworld extends cc.Component { onLoad(){ cc.game.addPersistRootNode(cc.find("sceneLayer")); cc.game.addPersistRootNode(cc.find("panelLayer")); cc.game.addPersistRootNode(cc.find("tipLayer")); LayerManager.ins().panelLayer = cc.find("panelLayer"); LayerManager.ins().tipLayer = cc.find("tipLayer"); } }
以上就是如何在CocosCreator中利用常駐節(jié)點(diǎn)做圖層管理的詳細(xì)內(nèi)容,更多關(guān)于CocosCreator常駐節(jié)點(diǎn)做圖層管理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
比較常見的javascript中定義函數(shù)的區(qū)別
js定義函數(shù)有好多種,但是他們之間的區(qū)別,大家都了解嗎,接下來,小編通過本文給大家介紹比較常見的js中定義函數(shù)的區(qū)別,對本文感興趣的朋友一起看看吧2015-11-11JS 設(shè)計(jì)模式之:單例模式定義與實(shí)現(xiàn)方法淺析
這篇文章主要介紹了JS 設(shè)計(jì)模式之:單例模式,結(jié)合實(shí)例形式分析了JS 單例模式原理、定義、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-05-05JS連接SQL數(shù)據(jù)庫與ACCESS數(shù)據(jù)庫的方法實(shí)例
這篇文章主要介紹了JS連接SQL數(shù)據(jù)庫與ACCESS數(shù)據(jù)庫的方法實(shí)例,有需要的朋友可以參考一下2013-11-11javascript 網(wǎng)頁跳轉(zhuǎn)的方法
昨天練習(xí)的時候正好要用到跳轉(zhuǎn)代碼,在網(wǎng)上找了一下,覺得下面幾個不錯...整理了一下發(fā)上來...2008-12-12有趣的script標(biāo)簽用getAttribute方法來自腳本吧
有趣的script標(biāo)簽用getAttribute方法來自腳本吧...2007-03-03javascript window.onerror事件學(xué)習(xí)新收獲
javascript window.onerror事件學(xué)習(xí)新收獲...2007-11-11javascript判斷iphone/android手機(jī)橫豎屏模式的函數(shù)
iphone能很好的使用onorientationchange事件,但是android的onresize事件即使不旋轉(zhuǎn)也會觸發(fā)多次2011-12-12js實(shí)現(xiàn)瀑布流的一種簡單方法實(shí)例分享
現(xiàn)在說瀑布流式布局似乎有點(diǎn)晚了,但是每一項(xiàng)技術(shù)都是向著“精”和“簡”的方向在不斷發(fā)展,在發(fā)展到極致之前,需要一個相當(dāng)漫長的過程,因此,從這個角度來說,當(dāng)瀑布流被應(yīng)用得越來越多的時候,反而更應(yīng)該討論它,討論如何將它改善2013-11-11