Cocos Creator 3.8.x bundle注意知识点

Cocos Creator 3.8.x bundle注意知识点,需掌握bundle核心知识点才能理解。

bundle核心知识点 : https://www.cnblogs.com/wujinhong/p/18341405

注意知识点(引擎3.8.3实际运行测试过):
1、默认4个Bundle build web包时,只存在3个,start-scene设置打包不会存在,打包微信小游戏才会存在。resources文件夹不存在时,resources Bundle也不会存在,此时build web包时,默认Bundle只剩下2个;题外话,打包微信小游戏时,main Bundle也不存在,但start-scene Bundle存在;当设置启动开始场景(Start Scene)所在的文件夹为Bundle,或者在resources文件夹时,启动开始场景(Start Scene)自动被切换成其它*.scene;
2、Bundle优先级>=7时,不会生效。只会优先加载默认的2~3个Bundle;即使在resources Bundle代码中调用assetManager.loadBundle(...)加载其它Bundle,也是在main Bundle加载完成之后加载;
3、因此resources内代码运行时,引用其它Bundle代码时,必然报错。因为其它Bundle晚于resources加载;
4、为了尽快进入并显示首页,resources必须尽可能的小,或者不使用。因此resources.load用处不大,反而assetManager及Bundle用处更大:
  assetManager.loadBundle( "core",(_err,bundle)=>{
            bundle.load("")
        });
5、所有不属于Bundle被引用的文件,默认都将打包进main Bundle里面。
6、由于main Bundle的优先级是7,小于resources Bundle的优先级8,所以resources Bundle引用默认Bundle(main Bundle)代码时,必然会报此错误。
Cocos Creator中,处理 Bundle 内存资源的管理通常是在游戏运行过程中,特别是在加载外部资源时,需要确保及时地释放不再使用的资源,以防止内存泄漏。以下是一些基本步骤: 1. **动态加载**:如果你是通过`cc.FileUtils.loadRes`这样的方法动态加载 Bundle 中的资源,记得在不需要时调用`cc.FileUtils.release`来卸载已加载的文件。例如: ```javascript var bundle = cc.FileUtils.getSearchPath("res/bundle"); var file = cc.FileUtils.load(resName, "bundle", bundle); // 使用完后 if (file) { cc.FileUtils.release(file); } ``` 2. **懒加载**:对于那些不会立即使用的资源,可以采用懒加载策略,只在真正需要时才加载,使用完毕后也应及时释放。 3. **垃圾回收**:Cocos Creator 的引擎内部有自动垃圾回收机制,如果对象不再有任何引用,其占用的内存会自动释放。但是,手动控制资源加载和卸载依然是一种好的实践,因为它能帮助定位和解决问题。 4. **避免循环引用**:检查是否有对象间的循环引用可能导致资源无法正常释放。确保对象之间的引用关系合理,特别是涉及到 Bundle 资源的对象。 5. **定期清理**:在合适的地方(比如游戏退出或进入后台等场景),遍历所有已加载的 Bundle 文件并逐个释放它们,这有助于优化内存。 记得随时监控游戏的内存使用情况,以便及时发现问题。如果你发现内存持续增长,那可能是资源管理不当造成的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值