资源属性的声明
cc.Asset 的子类下面这些
cc.Texture2D
、cc.SpriteFrame
、cc.AnimationClip
、cc.Prefab
等
加载场景,会自动加载场景关联的资源 ,再加载关联的资源所关联的资源,直到全加载
在属性检查器中设置资源
@property(cc.Label)
label: cc.Label = null;
@property({
type:cc.Enum(WallType),
displayName:"text2",
})
text3=WallType.Left;
界面上显示 text2,代码里实际使用的是 text3
动态加载 resources
//prefab
cc.resources.load(url,cc.Prefab,(err,prefab)=>{
let node = cc.instantiate(prefab);
node.parent = fatherNode;
})
cc.resources.load(url,cc.SpriteFrame, loadCallBack );
//SpriteAtlas
cc.resources.load(url,cc.SpriteAtlas,(err,atlas)=>{
let node = new cc.Node;
let sprite = node.addComponent(cc.Sprite);
sprite.spriteFrame = atlas.getSpriteFrame('sheep_run_0');
})
cc.resources.load(url, sp.SkeletonData, loadCallBack);
cc.resources.load(url, cc.Font, loadCallBack);
cc.resources.load(url, cc.ParticleAsset, loadCallBack);
//Audio
cc.resources.load(url, loadCallBack);
//Scene
cc.resources.loadScene(url, loadCallBack);
资源释放
某资源
cc.resources.release("test assets/image", cc.SpriteFrame);
cc.resources.release("test assets/anim");
某实例
cc.assetManager.releaseAsset(spriteFrame);
资源批量加载
// 加载 test assets 目录下所有资源
cc.resources.loadDir("test assets", function (err, assets) { // ... });
// 加载 test assets 目录下所有 SpriteFrame,并且获取它们的路径
cc.resources.loadDir("test assets", cc.SpriteFrame, function (err, assets) { // ... });
预加载资源
preload
和 preloadDir
预加载加载完,再加载一遍
cc.resources.preload('test assets/image', cc.SpriteFrame);
加载远程资源和设备资源
暂时不用,不看了
辨析
cc.resources.load
等 API 只适用于应用包内的资源和热更新的本地资源
cc.assetManager.loadRemote 可以加载远程贴图 如用户头像
资源的依赖和释放
在加载完资源之后,所有的资源都会临时被缓存到 cc.assetManager
中
cc.resources.load('image', cc.SpriteFrame, (err, spriteFrame) => {
this.spriteFrame = spriteFrame;
spriteFrame.addRef();//加引用计数
});
this.spriteFrame.decRef(); //减引用计数
this.spriteFrame = null;
详细的资源释放机制请参考 资源释放。
配置和加载 Asset Bundle
Asset Bundle 可以打包 代码、资源 和 场景 作为分包加载
让项目启动更容易,在游戏过程中再按需加载所需的资源所属的bundle文件
配置方法
保留名(系统用,你别用):resources、internal、main、start-scene
暂时不用,不学