对于小游戏来说,单个场景的页面可以事先写好然后用active的方式来开关。
但是这会导致一个严重的问题就是每次载入这个场景的时候就会很卡,而如果是让场景绑定预制体资源的时候这个场景同时也会加载对应的预制体资源,同样会导致很卡。
既然这样的话只有通过cc.loader来加载资源是具有效率的一种方式,不过要注意,预制体资源需要放在resources文件夹里面。

let self = this;
cc.loader.loadRes(url, function (err, prefab) {if (err == null && prefab){            var node:cc.Node = cc.instantiate(prefab);if (node){                    self._father.addChild(node); //这边要注意的一点,在cc.loader里面加载不要用this,}                       }else{cc.warn(err + " name load error!!!");}});

但是这个预制体是要关闭的。当需要关闭的时候便可以直接删除预制体就可以了,操作如下

node.destroy();//直接销毁节点,最具有效率的方式
node.removeFromParent();//移除与父节点的引用

一般而言只要destroy就可以了,但是随着预制体节点变多,很容易在预制体内容较多的情况下发生卡顿,所以在这里需要找到一个更好的解决方案

CocosCreator 和 Cocos2d-x在对象的内存管理上是完全不同的.
因为c++没有自动内存管理, 谁申请内存谁负责释放内存(堆内存), 这是非常容易出错的, Cocos2d-x使用引用计数来做内存管理, 主要通过对象的容器(对象数组/对象字典)来做计数增减, 节点树就是这样一个容器. 所以节点树可以管理节点对象的内存生命周期. cocos2d-lua/js 虽然是脚本语言, 语言本身是有自动内存管理的, 但是节点的内存还是c++管理.
而creator因为要做h5游戏, 必须要用js做节点的内存管理, 为了统一接口, 在native上也使用js的内存管理.
而js的内存管理很简单, 一个对象没有引用, 它就会被销毁回收. 但是如何保证节点对象没有被引用呢? 一个节点被移除节点树,没有执行action, 没有事件监听, 除了本身挂载的脚本组件外没有被其它脚本引用, 那么就可以认为没有被引用, 垃圾回收会回收对象内存.
destroy会删除所有的action和事件监听, 所以调用destroy删除节点是有效的做法.
--------此段引用自this.node.removeFromParent(); 删不干净

如若是预制体上有很多粒子效果,缓存,则需要用一个对象储存遍历该预制体所有cc.components,首先逐一删除其他然后再删除缓存

 releaseAsset(url:string){if (cc.sys.isBrowser)return;if (this.releaseObjs[url] || url == null)return;this.releaseObjs[url] = 1;if (url.indexOf("/ico/")){this._textCache.push(url);return;}cc.loader.removeItem(url); //据说删除有用                         var deps = cc.loader.getDependsRecursively(url);//获取某个已经加载好的资源的所有依赖资源,包含它自身,并保存在数组中返回。if (deps != null){for (var i = 0; i < deps.length; i++){if (deps[i] == null)continue;if (deps[i].indexOf("json") != -1 || deps[i].indexOf("/ui/common/") != -1 || deps[i].indexOf("/particle/") != -1 || deps[i].indexOf("/temp/") != -1 ||deps[i].indexOf("/ui/main/") != -1 || deps[i].indexOf("/ui/icon/") != -1){continue;}if (deps[i].indexOf('json') == -1 || deps[i].indexOf("/spine/") != -1){this._textCache.push(deps[i]);}}}cc.loader.releaseRes(url);//释放通过 loadRes 加载的资源。}//删除记录的没用的缓存文件releaseBgAsset(){for (var i = 0; i < this._textCache.length; i++){cc.loader.removeItem(this._textCache[i]);cc.loader.release(this._textCache[i]);}this._textCache = [];}

实际上,使用cc.loader删除是删的最干净的选择

Cocos Creator用cc.loader加载预制体资源和删除预制体资源相关推荐

  1. cocos creator 2.4.6 加载json文件 初始化游戏 - 初学者

    注意:所有的资源都必须放在 assets/resources  目录或子目录下 ,才能通过 cc.loader.loadRes()加载进来  1: 在assets 目录下创建 resources文件夹 ...

  2. Cocos Creator基础教程(8)—加载预制件

    我们上篇讲了[场景切换] 并编写了LoadScene场景加组件,这次我们在场景里面创建独立的子界面或子窗口.在Cocos Creator中实现子界面的最好方案就是: 预制件. 1. 生成预制件 Coc ...

  3. Cocos Creator 3.x 动态加载 龙骨动画

    龙骨动画比序列帧 优点好太多了,  CocosCreator 提供了很好的支持: 我们就用 龙骨软件自带的动画做一个demo 给大家介绍下:  1. 第一步 肯定是导出资源 我这边是按照目录进度的加载 ...

  4. webpack中loader加载器(打包非js模块)

    通过loader打包非js模块 我这儿用VScode为编辑器 在实际开发过程中,webpack默认只能打包处理以.js后缀名结尾的模块,其他非. js后缀名结 尾的模块,webpack 默认处理不了, ...

  5. html5 loader,7种基于GSAP的SVG Loader加载动画特效

    这是一组效果非常炫酷的基于GSAP的SVG Loader加载动画特效.这组SVG加载动画特效共有7种效果,分别使用GSAP对SVG进行操纵,制作出各种炫酷的Loading加载动画效果. 这些SVG加载 ...

  6. 需要了解的常用Webpack插件配置-loader加载器

    我们都知道通过安装和配置第三方插件,可以使我们的webpack拓展更多的功能,虽然之后开发项目不需要我们自己去进行这些繁琐的配置,但是我们需要知道这些,在必要时我们可以去做出修改 比如我们在初识web ...

  7. as3 Loader 加载资源后内存泄露无法释放的问题。

    as3 Loader 加载资源后内存泄露无法释放的问题. 本人用Loader加载外部一个swf.之后unloadAndStop,Flash概要分析发现,内存没有被释放. 网上搜了一大堆文章,要么就是加 ...

  8. 【SA8295P 源码分析】08 - XBL Loader 加载 SMSS、XBL Config、SHRM、CDT 、DDR、APDP、RamDump、OEM_MISC、AOP、QSEE过程分析

    [SA8295P 源码分析]08 - XBL Loader 加载 SMSS.XBL Config.SHRM.CDT .DDR.APDP.RamDump.OEM_MISC.AOP.QSEE Dev Co ...

  9. cocos2d-x android 直接加载下载到sd的zip里的资源文件(一)

    最近公司要做的一个cocos-x项目,这个项目用的是2.2.6版的cocos-x c++ 版,cocos比较老的版本.由于打包出来的apk超过了300M,而且资源无法热更新.面临这两个问题.我们讨论了 ...

最新文章

  1. LeeCode-Majority Element
  2. c语言调用系统当前时间的函数,c语言获取系统当前时间的函数,求讲解?
  3. 面试官问 async、await 函数原理是在问什么?
  4. 这几道 Redis 面试题都不懂,怎么拿 Offer?
  5. 【实时+排重】摆脱渠道统计刷量作弊行为
  6. C#LeetCode刷题-极小化极大
  7. Goalng笔记——排序和查找
  8. HDU3782 xxx定律【数学计算+水题】
  9. 三维重建笔记_光束平差法(Bundle Adjustment, BA)
  10. 利用 Composer 完善自己的 PHP 框架(二)——发送邮件
  11. charset参数 sqluldr2_SQLULDR2
  12. ThinkPad P73 拆机清灰日志
  13. 【单片机仿真】(二)keil 安装教程
  14. rapidminer decision tree(决策树)手册
  15. java坦克大战登录界面设计_JAVA课程设计——坦克大战
  16. 世界上最大的在线学习平台: Coursera 入门指南
  17. 论文到底怎么降重才有效
  18. 踩坑指南!anaconda新建环境出错解决!又是猛男落泪的一天!
  19. PDF打开后名称与实际文件名称不符的解决
  20. 10个我经常逛的“小网站”,嘿嘿嘿

热门文章

  1. HBase(一):概述
  2. OTG 线结构原理及注意事项
  3. Ubuntu安装Visual studio code(VScode),并配置远程资源管理器,VScode安装服务器(SSH)
  4. 极大似然估计原理详解
  5. html css 清除 button 选中时的边框样式 CSS outline属性
  6. SOM-TL5728 AM5728双核ARM Cortex-A15 +浮点双核DSP C66x处理器设计的工业级核心板
  7. java 工作流表单设计器 设计方案
  8. 宋词欣赏 -- 李清照词全集
  9. 计算机网络中的节点有转接节点和传输节点,计算机网络技术复习材料带答案全套...
  10. python etl工具 sqoop hive_python脚本 用sqoop把mysql数据导入hive