美文网首页
cocos creator 2.0.9 龙骨实验笔记

cocos creator 2.0.9 龙骨实验笔记

作者: 人气小哥 | 来源:发表于2019-05-31 11:25 被阅读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 导致野指针内存没删的情况

    相关文章

      网友评论

          本文标题:cocos creator 2.0.9 龙骨实验笔记

          本文链接:https://www.haomeiwen.com/subject/zzkwtctx.html