cocos creator 2.0.9 龙骨实验笔记

2019-05-31  本文已影响0人  人气小哥
  1. 创建1000个龙骨 drawcall 依然是1000
    龙骨不会批渲染

  2. 龙骨缓存模式尝试
    创建1000个龙骨动画
    如果采用的是REALTIME
    那么看chrome内存是380~400左右

创建1000个龙骨动画
如果采用的是SHARED_CACHE
那么内存是38~48左右
证明这个模式 共享了纹理
但是模式说明生也写得很清楚 不支持龙骨的动作融合叠加骨骼嵌套 比较适合于飞机子弹

  1. 删除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);

  1. 单独删除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 导致野指针内存没删的情况

上一篇 下一篇

猜你喜欢

热点阅读