cocos creator 2.0.9 龙骨实验笔记
2019-05-31 本文已影响0人
人气小哥
-
创建1000个龙骨 drawcall 依然是1000
龙骨不会批渲染 -
龙骨缓存模式尝试
创建1000个龙骨动画
如果采用的是REALTIME
那么看chrome内存是380~400左右
创建1000个龙骨动画
如果采用的是SHARED_CACHE
那么内存是38~48左右
证明这个模式 共享了纹理
但是模式说明生也写得很清楚 不支持龙骨的动作融合叠加骨骼嵌套 比较适合于飞机子弹
- 删除1000个龙骨的父节点
子节点会在父节点destroy后立刻消失
但是内存大概过了30 - 40秒左右才回收干净(300 - 400降至38 - 48) 证明内存回收需要时间 但是能回收干净
具体项目中还是需要注意峰值
let nMaxNum = 1000
for (let i = 0; i < nMaxNum; ++i) {
let itemNode = cc.instantiate(this.dbNd);
this.parentNd.addChild(itemNode)
itemNode.x = g_getRandomInt(-1334/2, 1334/2)
itemNode.y = g_getRandomInt(-750/2, 750/2)
}
this.scheduleOnce(function() {
// 这里的 this 指向 component
this.parentNd.destroy()
}, 10);
- 单独删除1000个龙骨子节点
this.tbDbNd = []
let nMaxNum = 1000
for (let i = 0; i < nMaxNum; ++i) {
let itemNode = cc.instantiate(this.dbNd);
this.parentNd.addChild(itemNode)
itemNode.x = g_getRandomInt(-1334/2, 1334/2)
itemNode.y = g_getRandomInt(-750/2, 750/2)
this.tbDbNd[i] = itemNode
}
this.scheduleOnce(function() {
// 这里的 this 指向 component
for (let i = 0; i < nMaxNum; ++i) {
this.tbDbNd[i].destroy()
}
//this.parentNd.destroy()
}, 10);
也花了30 - 40秒回收内存(300 - 400降至38 - 48)
证明删除父节点是最好的管理子节点内存的方式
因为效果一样 还不会导致单独管理子节点记录id 导致野指针内存没删的情况