告诉大家一个可以让ui内存占用减少5倍以上的简单方法!!!

打开UIScale9Sprite这个文件,把_scale9Enabled(true)改成_scale9Enabled(false),这个改动不会影响你的CocosStudio解析,已经实际测试,但是内存占用会大幅下降。
原因就是我们大多数图片是没有用九宫格的,但是默认一开始就会默认成九宫格,就算你调用了setScale9Enabled(false),也不会删除9宫格的九个精灵,所以就会导致内存占用很大,然而CocosStudio在解析的时候,如果用了九宫格是会手动调用开启的,所以并没有关系,如果你是自己用代码使用了这个九宫格,那么手动调用一下setScale9Enabled(true),这个方法就行了!!!!

:2: :2: :2: :2: :2: :2: :2:

以上内容全部经过实际测试,大家放心使用。
:2: :2: :2: :2: :2: :2: :2:

NS_CC_BEGIN
namespace ui {

Scale9Sprite::Scale9Sprite()
: _spritesGenerated(false)
, _spriteFrameRotated(false)
, _positionsAreDirty(true)
, _scale9Image(nullptr)
, _topLeftSprite(nullptr)
, _topSprite(nullptr)
, _topRightSprite(nullptr)
, _leftSprite(nullptr)
, _centerSprite(nullptr)
, _rightSprite(nullptr)
, _bottomLeftSprite(nullptr)
, _bottomSprite(nullptr)
, _bottomRightSprite(nullptr)
, _scale9Enabled(false) <-<-<-<-<-<-<-<-<-<-<-<-<-就是它改成false<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-
, _insetLeft(0)
, _insetTop(0)
, _insetRight(0)
, _insetBottom(0)
,_flippedX(false)
,_flippedY(false)
,_isPatch9(false)
,_brightState(State::NORMAL)

楼主是不是应该将你说的cocos版本也一同告知一下呢?

3.8版本:14::14::14::14:

我书读得少,别骗我
减少5【倍】 --> 牛逼啊。。。

:14:一般九宫都是在studio里头调,所以也都开起来了,真正自己用九宫的情况还是比较少

mark…

nice+10086

在studio里调成关闭也没用的,因为还是10个精灵一张图片,一开始就初始化了10个精灵了

之前以为是update时候才初始化精灵。刚看了下代码,确实是init时候就进行精灵初始化的

必須頂的:2:

这个必须顶:2::2::2::2::2:

是的是的~~~:2::2::2::2:

mark…

我3.5的版本没发现 这些sprite setScale9Enable中被clear 和 release 置空了

可能我看的版本不一样 如果说是会造成内存波动大 确实这样 用ccs 这套UI的话

quick 3.5试了貌似没啥效果
不过既然用了Scale9Sprite这个类默认开启也很正常

nice + 10086

这么厉害。回头试试,谢谢分享~

已测试不存在这种情况。代码都看过了。

UIScale9Sprite哪个版本 加上去 的