我正在使用cocos2d-x 3.2开发游戏,我的应用程序内存随着游戏的进展而增加在cocos2d-x 3.2中更换场景时似乎没有释放资源内存,请帮忙
答案 0 :(得分:0)
您可以使用
Director::getInstance()->purgeCachedData();
在TextureCache,SpriteFrameCache等中释放那些未使用的资源
答案 1 :(得分:0)
如果没有看到某些代码,这将难以正确回答,但我会冒一两个猜测。希望这会有所帮助。
一个常见的错误是默认情况下不使用::create()
个所有Node
相关类的函数。使用::create()
可确保使用Ref
,这意味着对象将被引用计数,并且在替换场景后内存几乎会自动释放。因此,如果您在代码中的某处使用new Scene()
(并且您不会在析构函数中释放它)而不是Scene::create()
,那么您就会在那里发生内存泄漏。
Sprite
,Node
,Action
基本上都是如此。始终使用相关的::create()
静态函数。如果您继承自这些类中的任何一个,则可以通过在标题中的类定义中放置create()
来轻松创建自己的CREATE_FUNC(Player)
方法。在这种情况下,Player
是您创建的类的名称,用于扩展现有类,例如Node
或Sprite
。