講解1://以下部分颅围,為新建的map 和?管道容器
const?Cache = require('./cache');//沒啥神奇的,進入看看就是創(chuàng)建了個obj當map用
const?Pipeline = require('./pipeline');
var?assets =?new?Cache();
var?files =?new?Cache();
var?parsed =?new?Cache();
var?bundles =?new?Cache();
var?pipeline =?new?Pipeline('normal load', []);
var?fetchPipeline =?new?Pipeline('fetch', []);
var?transformPipeline =?new?Pipeline('transform url', []);
/**
*?@modulecc.AssetManager
RequestType 對應的請求類型,可以當做枚舉來理解
eg:在cc.resources.loadDir中的參數(shù) 即為:
RequestType.DIR 類型
*/
var?RequestType = {
UUID:?'uuid',
PATH:?'path',
DIR:?'dir',
URL:?'url',
SCENE:?'scene'
};
/**
*?@enum?BuiltinBundleName
bundle 對應的四個固定位置佃延,在引擎啟動的時候山析,會首先進行初始化。
具體在 build好的main.js中用到阻桅。
let { RESOURCES, INTERNAL, MAIN, START_SCENE } = cc.AssetManager.BuiltinBundleName;
通過利用對象的解構翔烁,進行變量初始化
*/
var?BuiltinBundleName = {
/**?
這部分弦牡,在build后的 assets中的 resources中友驮,空工程,需要新建resources文件夾驾锰,所有動態(tài)加載的資源文件都放到這里卸留。
? ? * !#zh
? ? * 內(nèi)置 bundle, 對應 'assets/resources' 目錄
? ? *
*?@property?RESOURCES
*?@readonly
*?@type{String}
? ? */
RESOURCES:?'resources',
/**
這部分,在build后的 assets中的?internal中
? ? * !#zh
? ? * 內(nèi)置 bundle, 對應 'internal/resources' 目錄
? ? *
*?@property?INTERNAL
*?@readonly
*?@type{String}
? ? */
INTERNAL:?'internal',
/**?
? ? * !#zh
? ? * 內(nèi)置 bundle
? ? *
*?@property?MAIN
*?@readonly
*?@type{String}
? ? */
MAIN:?'main',
/**
? ? ??在各個小游戲平臺存在首個場景分包的情況椭豫,則會存在這個文件夾耻瑟。
build/asset/main
? ? *
? ? * !#zh
? ? * 內(nèi)置 bundle, 如果構建面板開啟了首場景分包,則會有 START_SCENE bundle
? ? *
*?@property?START_SCENE
*?@readonly
*?@type{String}
? ? */
START_SCENE:?'start-scene',
};
module.exports = { assets, files, parsed, pipeline, fetchPipeline, transformPipeline, RequestType, bundles, BuiltinBundleName };
這個文件存在的意義赏酥,主要是聲明數(shù)據(jù)結構喳整,進行enum 枚舉類型的聲明,在assetManager中調(diào)用裸扶。引擎初始化后首先調(diào)用部分邏輯從這里開始框都,所以分析源碼,也從這個單個文件開始了呵晨。保持專注魏保,持續(xù)發(fā)布!