Cocos Creator 加載和切換場景(官方文檔摘錄)


Cocos Creator 加載和切換場景(官方文檔摘錄)

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

cc.director.loadScene('MyScene');

通過常駐節點進行場景資源管理和參數傳遞

通常我們同時只會加載運行一個場景,當切換場景時,默認會將場景內所有節點和其他實例銷毀。如果我們需要用一個組件控制所有場景的加載,或在場景之間傳遞參數數據,就需要將該組件所在節點標記為「常駐節點」,使它在場景切換時不被自動銷毀,常駐內存。我們使用以下接口:

cc.game.addPersistRootNode(myNode);

上面的接口會將 myNode 變為常駐節點,這樣掛在上面的組件都可以在場景之間持續作用,我們可以用這樣的方法來儲存玩家信息,或下一個場景初始化時需要的各種數據。

如果要取消一個節點的常駐屬性:

cc.game.removePersistRootNode(myNode)

使用全局變量

除此之外,簡單的數值類數據傳遞也可以使用全局變量的方式進行,詳見通過全局變量跨組件訪問值

場景加載回調

加載場景時,可以附加一個參數用來指定場景加載后的回調函數:

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

上一行里 onSceneLaunched 就是聲明在本腳本中的一個回調函數,在場景加載后可以用來進一步的進行初始化或數據傳遞的操作。

由於回調函數只能寫在本腳本中,所以場景加載回調通常用來配合常駐節點,在常駐節點上掛載的腳本中使用。

預加載場景

cc.director.loadScene 會在加載場景之后自動切換運行新場景,有些時候我們需要在后台靜默加載新場景,並在加載完成后手動進行切換。

可以預先使用 preloadScene 接口對場景進行預加載:

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

之后在合適的時間調用 loadScene, 就可以立即切換場景

cc.director.loadScene('table');

實戰例子可以參考 21點演示項目

注意 使用預加載場景資源配合 runScene 的方式進行預加載場景的方法已被廢除:

// 請不要再使用下面的方法預加載場景! cc.loader.loadRes('MyScene.fire', function(err, res) { cc.director.runScene(res.scene); });


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM