• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
养眼大魔王
博客园    首页    新随笔    联系   管理    订阅  订阅

cocos2d-x内存管理(见解)

cocos2d-x 延续了cocos2d 和OC的引用计数的内存管理机制!

下面我们来看看CCDriectro类 CCPoolManager::sharedPoolManager()->push();
基础:我们要先熟悉  release  释放该内存!
 
    CCPoint *temp = new CCPoint(controlPoint.x, controlPoint.y);

    m_pControlPoints->addObject(temp);

    temp->release();

 

autorelease 是标记自动释放对象!下面会讲到自动内存释放 是怎么操作的

CCString* pRet = new CCString(str);

    pRet->autorelease();

    return pRet;

 

CCPoolManager::sharedPoolManager()->pop();  看看这两个方法!就相当于OC的内存释放池! 在CCDriectro中 每次去渲染的时候!都会去查看内存释放池的是否有内存计数为0的对象!如果有的话!就会去清理掉!释放内存! 

 其实我们在游戏开发中 注意一些内存的管理,对游戏有很大的帮助!一点一点积攒起来!就会对游戏内存吃紧的问题!有本质的解决!

1,如场景切换  在内存吃紧的情况下 我们可以选择 先清理一下缓存!

// 清空缓存 CCDirector::sharedDirector()->purgeCachedData(); 

2,场景切换也有注意的地方!场景切换 有压入式加入!替换式加入!

这里说一下压入场景(pushScene)和弹出场景(popScene)。它们都可以用来显示场景 和保留当前场景并显示新场景 ;不同的是它们不把旧场景从内存中释放掉,这样可以提高加 载速度,这时需要注意,如果内存不足以支撑的话,建议采用 replaceScene函数。

以上过程分为以下三步:

1)调用 CCDirector::sharedDirector()->purgeCachedData() 清空缓存。
2)新建场景。
3)调用 CCDirector::sharedDirector()->replaceScene(this) 替换新场景。Cocos2D-x 提供了场景间切换的特效,下一节将会介绍这些内容。

posted @ 2014-10-29 19:46  养眼大魔王  阅读(340)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3