cocos retain and release

开发cocos js项目的时候遇到报错:invalid native object

我写了一个uilayer, 为了缓存起来,所以加上了retain,但是在第二次使用的时候还是报错,查了很久,发现在这个uilayer里面有一个action,也需要retain,否则在下次使用的时候,就会报invalid native object错误,有点坑

加了retain(),什么时候release呢,在onExit()函数里调用不行,因为每次从父节点remove的时候,都会调用onExit(),这里release了,那么下次再使用的时候,这个action就不存在了,所以我单建立一个销毁方法destroy,,如果确实想销毁这个节点,就手动调用它的销毁方法。下面是示例代码

ctor : function {

this.uiRoot = ccs.load("res/TipLayer.json");
      
        this._skinNode = this.uiRoot.node
        this.addChild(this._skinNode);
        
        this._uiAction = this.uiRoot.action;
        this._uiAction.retain();

},

destroy: function() {
        this._super();
        if(this._uiAction){
            this._uiAction.release();
        }
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos分层是指在Cocos游戏引擎中,将游戏场景或游戏对象按照不同的层级进行管理和渲染的一种技术。通过分层可以实现游戏元素的层次感和深度感,同时也方便了游戏对象的管理和控制。 在Cocos中,可以通过以下方式进行分层: 1. 场景层(Scene Layer):场景层是最底层的分层,用于管理整个游戏场景。一个游戏通常包含多个场景,每个场景都有自己的层级结构。场景层可以包含多个其他类型的层,如UI层、游戏对象层等。 2. UI层(UI Layer):UI层用于管理游戏中的用户界面元素,如按钮、标签、进度条等。UI层通常位于最上方,不受游戏对象的渲染顺序影响。通过UI层可以实现游戏中的菜单、设置界面等功能。 3. 游戏对象层(Game Object Layer):游戏对象层用于管理游戏中的各种游戏对象,如角色、敌人、道具等。游戏对象层可以根据需要创建多个,每个对象层可以控制不同类型的游戏对象的渲染顺序和行为。 4. 特效层(Effect Layer):特效层用于管理游戏中的特效效果,如爆炸、闪电等。特效层通常位于游戏对象层之上,可以通过特效层实现游戏中的动态效果和视觉冲击。 5. 背景层(Background Layer):背景层用于管理游戏中的背景元素,如地图、背景图片等。背景层通常位于最底部,用于呈现游戏的背景环境。 以上是Cocos分层的一些常见方式,通过合理的分层可以提高游戏的性能和可维护性,同时也能够更好地控制游戏元素的显示和交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值