cocos creator动态加载资源

本文详细介绍了Cocos Creator中动态加载资源的方法,包括动态加载Asset、资源批量加载、远程资源和设备资源的加载,以及资源依赖和释放的注意事项。强调了动态加载的异步性质和资源管理的重要性,特别是资源之间的依赖关系和JavaScript中对象引用的管理,以确保内存的有效利用。
摘要由CSDN通过智能技术生成

动态加载资源要注意两点,一是所有需要通过脚本动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下。resources 需要在 assets 文件夹中手工创建,并且必须位于 assets 的根目录

 

resources 文件夹中的资源,可以引用文件夹外部的其它资源,同样也可以被外部场景或资源引用到。项目构建时,除了已在 构建发布 面板勾选的场景外,resources 文件夹中的所有资源,连同它们关联依赖的 resources 文件夹外部的资源,都会被导出。

如果一份资源仅仅是被 resources 中的其它资源所依赖,而不需要直接被 cc.loader.loadRes 调用,那么 请不要 放在 resources 文件夹里。否则会增大包体和 settings.js 的大小,并且项目中无用的资源,将无法在构建的过程中自动剔除。同时在构建过程中,JSON 的自动合并策略也将受到影响,无法尽可能将零碎的 JSON 合并起来。

 

// 动态加载 AnimationClip

var self = this;

cc.loader.loadRes("test assets/anim", function (err, clip) {

self.node.getComponent(cc.Animation).addClip(clip, "anim");

});

 

第二个要注意的是 Creator 相比之前的 Cocos2d-JS,资源动态加载的时候都是 异步 的,需要在回调函数中获得载入的资源。这么做是因为 Creator 除了场景关联的资源,没有另外的资源预加载列表,动态加载的资源是真正的动态加载。

动态加载 Asset

Creator 提供了 cc.loader.loadRes 这个 API 来专门加载那些位于 resources 目录下的 Asset。和 cc.loader.load 不同的是,loadRes 一次只能加载单个 Asset。调用时,你只要传入相对 resources 的路径即可,并且路径的结尾处 不能 包含文件扩展名。

// 加载 Prefab cc.loader.loadRes("test assets/prefab", function (err, prefab) { var newNode = cc.instantiate(prefab); cc.director.ge

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos Creator 是一款基于 JavaScript 的游戏开发工具,支持动态加载资源动态加载资源是指在游戏运行时,根据需要动态加载游戏所需的资源,例如图片、声音、动画等。 动态加载资源的优点在于可以减少游戏的启动时间和内存占用,同时也可以提高游戏的灵活性和可维护性。下面介绍一下 Cocos Creator 中如何进行动态加载资源。 1. 加载图片资源 使用 cc.loader.loadRes() 方法可以加载项目中的资源,例如图片资源。示例代码如下: ``` cc.loader.loadRes("image/test", cc.SpriteFrame, function (err, spriteFrame) { if (err) { cc.error(err.message || err); return; } var node = new cc.Node("New Sprite"); var sprite = node.addComponent(cc.Sprite); sprite.spriteFrame = spriteFrame; node.parent = cc.director.getScene(); }); ``` 该代码会加载项目中的 "image/test" 路径下的图片资源,并创建一个新的 Sprite 对象,将图片资源赋值给 Sprite 的 spriteFrame 属性,最后将 Sprite 对象添加到场景中。 2. 加载声音资源 使用 cc.loader.loadRes() 方法也可以加载声音资源。示例代码如下: ``` cc.loader.loadRes("audio/test", cc.AudioClip, function (err, audioClip) { if (err) { cc.error(err.message || err); return; } cc.audioEngine.play(audioClip, false, 1); }); ``` 该代码会加载项目中的 "audio/test" 路径下的声音资源,并播放该声音。 3. 加载动画资源 使用 cc.loader.loadRes() 方法也可以加载动画资源。示例代码如下: ``` cc.loader.loadRes("animation/test", cc.AnimationClip, function (err, animationClip) { if (err) { cc.error(err.message || err); return; } var node = new cc.Node("New Animation"); var animation = node.addComponent(cc.Animation); animation.addClip(animationClip); animation.play("test"); node.parent = cc.director.getScene(); }); ``` 该代码会加载项目中的 "animation/test" 路径下的动画资源,并创建一个新的 Animation 对象,将动画资源添加到 Animation 中,最后播放名为 "test" 的动画。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值