(七)加載和切換場(chǎng)景

(七)加載和切換場(chǎng)景

在 Cocos Creator 中,我們使用場(chǎng)景文件名( 可以不包含擴(kuò)展名)來索引指代場(chǎng)景。并通過以下接口進(jìn)行加載和切換操作:

cc.director.loadScene('MyScene');

通過常駐節(jié)點(diǎn)進(jìn)行場(chǎng)景資源管理和參數(shù)傳遞

通常我們同時(shí)只會(huì)加載運(yùn)行一個(gè)場(chǎng)景,當(dāng)切換場(chǎng)景時(shí),默認(rèn)會(huì)將場(chǎng)景內(nèi)所有節(jié)點(diǎn)和其他實(shí)例銷毀。如果我們需要用一個(gè)組件控制所有場(chǎng)景的加載,或在場(chǎng)景之間傳遞參數(shù)數(shù)據(jù),就需要將該組件所在節(jié)點(diǎn)標(biāo)記為「常駐節(jié)點(diǎn)」,使它在場(chǎng)景切換時(shí)不被自動(dòng)銷毀,常駐內(nèi)存。我們使用以下接口:

cc.game.addPersistRootNode(myNode);

上面的接口會(huì)將 myNode 變?yōu)槌qv節(jié)點(diǎn),這樣掛在上面的組件都可以在場(chǎng)景之間持續(xù)作用,我們可以用這樣的方法來儲(chǔ)存玩家信息,或下一個(gè)場(chǎng)景初始化時(shí)需要的各種數(shù)據(jù)。

如果要取消一個(gè)節(jié)點(diǎn)的常駐屬性:

cc.game.removePersistRootNode(myNode)

使用全局變量

除此之外,簡(jiǎn)單的數(shù)值類數(shù)據(jù)傳遞也可以使用全局變量的方式進(jìn)行,詳見通過全局變量跨組件訪問值。

場(chǎng)景加載回調(diào)

加載場(chǎng)景時(shí),可以附加一個(gè)參數(shù)用來指定場(chǎng)景加載后的回調(diào)函數(shù):

cc.director.loadScene('MyScene', onSceneLaunched);

上一行里 onSceneLaunched 就是聲明在本腳本中的一個(gè)回調(diào)函數(shù),在場(chǎng)景加載后可以用來進(jìn)一步的進(jìn)行初始化或數(shù)據(jù)傳遞的操作。

由于回調(diào)函數(shù)只能寫在本腳本中,所以場(chǎng)景加載回調(diào)通常用來配合常駐節(jié)點(diǎn),在常駐節(jié)點(diǎn)上掛載的腳本中使用。

預(yù)加載場(chǎng)景

cc.director.loadScene 會(huì)在加載場(chǎng)景之后自動(dòng)切換運(yùn)行新場(chǎng)景,有些時(shí)候我們需要在后臺(tái)靜默加載新場(chǎng)景,并在加載完成后手動(dòng)進(jìn)行切換。

可以預(yù)先使用 preloadScene 接口對(duì)場(chǎng)景進(jìn)行預(yù)加載:

cc.director.preloadScene('table', function () {
    cc.log('Next scene preloaded');
});

之后在合適的時(shí)間調(diào)用 loadScene, 就可以立即切換場(chǎng)景

cc.director.loadScene('table');

注意 使用預(yù)加載場(chǎng)景資源配合 runScene 的方式進(jìn)行預(yù)加載場(chǎng)景的方法已被廢除:

// 請(qǐng)不要再使用下面的方法預(yù)加載場(chǎng)景!
cc.loader.loadRes('MyScene.fire', function(err, res) {
    cc.director.runScene(res.scene); 
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,939評(píng)論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,186評(píng)論 4 61
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,539評(píng)論 19 139
  • 孔子夢(mèng)周公,王陽明夢(mèng)見孟子,夢(mèng)見孟子跟他講良知說,由此發(fā)明了他的致良知王陽明心學(xué)。 【孟子曰:“人之所不學(xué)而能者,...
    華杉2009閱讀 1,132評(píng)論 0 1
  • 你說青春是一把零錢,碰巧能夠換啤酒一罐,陪著黃昏喝完然后笑說再見,起身離開時(shí)紅著雙眼。 越長(zhǎng)大越孤單,...
    北方拐角糖葫蘆閱讀 752評(píng)論 4 10

友情鏈接更多精彩內(nèi)容