cocos creator基礎-(二十四)cc.Director與資源加載策略
阿新 • • 發佈:2019-03-17
第一個 引擎 style 窗口 ogre ocl tla per ger
1: 了解creator場景切換;
2: 了解director基本的一些接口;
3: 理解資源加載的策略;
cc.Director對象
1:遊戲裏面控制管理整個遊戲全局對象,包括了場景切換等,為cc.Director對象;
2:導演對象全局只有一個cc.director,大寫的為類, 小寫的cc.director為全局的導演對象;
3: cc.director來獲取導演對象實例;
4: 遊戲中各種管理對象都可以通過cc.director獲取,比如物理引擎管理,Action管理, 碰撞檢測管理等;
常用接口 1: getWinSize: 適配後的邏輯大小; 2: getWinSizeInPixels: 獲取窗口的像素大小; 3: getScene: 獲取當前的邏輯場景,場景對象下面是Canvas; 4: setDisplayStats: 是否顯示左下角FPS信息; 5: getCollisionManager: 獲取碰撞檢測管理對象; 6: getPhysicsManager :獲取物理引擎管理對象; 7:loadScene(scene_name):加載場景,場景的名字,系統會加載對應的場景 8:preloadScene(scene_name):預加載場景
資源加載策略
1: h5資源加載的過程: (1)從服務器上下載來來資源,並把資源加載到內存中,所以你在做h5遊戲,你要把你當前遊戲中要用到的資源先加載下來,否者的話,你在運行的時候去加載就來不及了(h5卡住); 2:三種資源加載策略: 1>: h5的小遊戲:采用全部提前綁定好所有的資源。編寫預加載腳本preload.js, 將要加載的資源手動關聯到第一個啟動的場景上面,一次性預加載所有; 2>: 添加等待界面,預加載下一個場景,然後再進行切換,提前關聯好下一個場景要的資源,每一個需要加載資源的場景都應該掛載一個preload.js腳本區關聯資源; cc.loader.onProgress = function ( completedCount, totalCount, item ){ console.log("completedCount:" + completedCount + ",totalCount:" + totalCount ); }; 3> 嫌手動關聯麻煩,在場景切換中加入過渡場景,代碼來加載場景的資源: cc.loader.loadResAll("textures", function (err, assets) { }); 代碼加載資源會導致setting.js文件過大,一般盡量少在代碼裏面加載資源;
常用接口 1: getWinSize: 適配後的邏輯大小; 2: getWinSizeInPixels: 獲取窗口的像素大小; 3: getScene: 獲取當前的邏輯場景,場景對象下面是Canvas; 4: setDisplayStats: 是否顯示左下角FPS信息; 5: getCollisionManager: 獲取碰撞檢測管理對象; 6: getPhysicsManager :獲取物理引擎管理對象; 7:loadScene(scene_name):加載場景,場景的名字,系統會加載對應的場景 8:preloadScene(scene_name):預加載場景
1: h5資源加載的過程: (1)從服務器上下載來來資源,並把資源加載到內存中,所以你在做h5遊戲,你要把你當前遊戲中要用到的資源先加載下來,否者的話,你在運行的時候去加載就來不及了(h5卡住); 2:三種資源加載策略: 1>: h5的小遊戲:采用全部提前綁定好所有的資源。編寫預加載腳本preload.js, 將要加載的資源手動關聯到第一個啟動的場景上面,一次性預加載所有; 2>: 添加等待界面,預加載下一個場景,然後再進行切換,提前關聯好下一個場景要的資源,每一個需要加載資源的場景都應該掛載一個preload.js腳本區關聯資源; cc.loader.onProgress = function ( completedCount, totalCount, item ){ console.log("completedCount:" + completedCount + ",totalCount:" + totalCount ); }; 3> 嫌手動關聯麻煩,在場景切換中加入過渡場景,代碼來加載場景的資源: cc.loader.loadResAll("textures", function (err, assets) { }); 代碼加載資源會導致setting.js文件過大,一般盡量少在代碼裏面加載資源;
//preload.js 掛載資源的腳本 cc.Class({ extends: cc.Component, properties: { // foo: { // default: null, // The default value will be used only when the component attaching // to a node for the first time // url: cc.Texture2D, // optional, default is typeof default// serializable: true, // optional, default is true // visible: true, // optional, default is true // displayName: ‘Foo‘, // optional // readonly: false, // optional, default is false // }, // ... img_array: { type: cc.SpriteFrame, default: [], }, atlas_array: { default: [], type: cc.SpriteAtlas, }, sound_array: { default: [], url: cc.AudioClip, }, prefab_array: { default: [], type: cc.Prefab, }, }, // use this for initialization onLoad: function () { }, // called every frame, uncomment this function to activate update callback // update: function (dt) { // }, });
//home_scene.js 預加載下個場景資源的處理腳本 cc.Class({ extends: cc.Component, properties: { // foo: { // default: null, // The default value will be used only when the component attaching // to a node for the first time // url: cc.Texture2D, // optional, default is typeof default // serializable: true, // optional, default is true // visible: true, // optional, default is true // displayName: ‘Foo‘, // optional // readonly: false, // optional, default is false // }, // ... wait: { type: cc.Node, default: null, }, progress_label: { type: cc.Label, default: null, }, }, // use this for initialization onLoad: function () { this.wait.active = false; this.progress_label.string = "0%"; }, goto_roadmap: function() { // 你在做場景切換的時候,如果你直接切換過去, // 由於下一個場景一定要先加載完它所需要的資源,那麽一定會卡住一段時間; // 會在這裏加上我們的等待界面,加入,場景加載的等待場景; this.wait.active = true; cc.loader.onProgress = function(completedCount, totalCount, item){ console.log("completedCount:" + completedCount + ",totalCount:" + totalCount); var per = Math.floor(completedCount * 100 / totalCount); this.progress_label.string = per + "%"; }.bind(this); // 預加載 cc.director.preloadScene("roadmap_scene", function() { cc.loader.onProgress = null; cc.director.loadScene("roadmap_scene"); }); // end }, // called every frame, uncomment this function to activate update callback // update: function (dt) { // }, });
cocos creator基礎-(二十四)cc.Director與資源加載策略