游戏优化

是不是这样说更清楚一些:etc1是8倍压缩,因为alpha要单独压,或者打到一个图集里,所以是2张图的大小,变成了4倍压缩?

对的,差不多可以这样理解。

经过我仔细想了想,项目唯一优化方案就是重写一遍:6:

楼主说的是包体大小,还是游戏内存大小

500M是运行内存

那你可以从下面几个方面入手看看:
1.图集内存。安卓可使用ETC1,ios可使用 pvrtc,这样可以减少很多的游戏内存。
ETC1,pvrtc都是8倍压缩,但是ETC1要压缩2张,所以4倍压缩。
使用这个2个,对提升游戏性能也有所帮助。
2.是否你的游戏架构都是使用组件方式。例如你加载一个预设的时候,不只是加载一个预设,预设里又嵌套的预设,这样不仅加重卡断,也加大了内存。
3.你的游戏是否有针对资源进行管理,释放那些可以释放的内存(但是频繁加载也会造成io频繁,发烫),由于你的题目是进入游戏就500m,那么切换场景你可能没有正确释放内存,可以查看一下是否存在这个问题。如果你是1.10以下的版本,应该是会存在这个问题的。
仅供参考~

现在纹理压缩不敢做,因为android和ios热更新的都是同一套资源,不知道在ios用etc1压缩会不会出什么问题。
第二点这个这个我只能重新看一下我自己写的游戏,其他人写的不敢动。
第三点有很大可能性,我现在基本上就是怀疑大厅很多资源没有释放,但是大厅场景也勾选自动释放资源了。求指教

第一个是大块,而且和游戏功能开发逻辑无关,看样子你是上线项目。如果不是官方最新版本,那是需要自己改引擎的。还要换包;
第二个你不能改其他人的东西,而且这个改动会比较大,不建议上线项目临时就改。有规划性的修改比较好。
第三个是否有资源管理,你应该清楚,然后内存是否没有释放,找个探测工具试一试就可以了。

好的,回头试试。

我们改用微信小游戏的声音api后,运行内存少了多200mb

缺点是做起来比较麻烦

好像我们这个不是微信小游戏

刚才看到cc.loader.releaseAll()的说明,说是如果勾选自动释放资源的话切换场景时旧场景的资源会被释放,但是利用cc.loader.loadRes的资源则不受影响,默认不会被释放,现在看看在切换场景的时候调用一下cc.loader.releseAll。情况会好一些。

  1. cc.loader.releaseAll() 是释放所有资源

    这个_cache保存了当前你加载的资源引用。
    不是很确定真的可以这样用么?
    我的理解是,如果没有存在泄露,用这个,会让你屏幕黑块(资源都被释放了),我也很想知道这个API怎么使用。
    API描述:
    https://docs.cocos.com/creator/api/zh/classes/loader.html#releaseall
    2.如果勾选自动释放资源的话切换场景时旧场景的资源会被释放,但是利用cc.loader.loadRes的资源则不受影响,默认不会被释放。是的。场景的所有依赖资源是A, 你加载的资源(包括所有依赖资源)是B, 切换场景,只会释放 A - (A,B)交集
    具体代码在
    也就意味着,如果自己加载的这些资源(包括依赖资源)如果得不到正确的管理/释放,那么他就不会被释放!
    问一下你用的什么版本

你的背景图这么大, 你的设计分辨率是多大啊.
我们用 1136640 或者 1280720. 设计分辨率小, 图片自然就小, 内存占用会明显下降. 可以从这里入手

现在版本是1.8.2。我试了一下,你说的确实是对的,游戏在大厅是240多M,到游戏内就变成430M以上,我这个内存是通过切入后台看到的,很显然大厅的内存没有释放。估计是这个方法在web上面管用,在Android平台不怎么管用吧

设计分辨率是1920*1080

花了一上午做了一下纹理压缩,虽然打出来的安装包大了一半,原来的是104m到现在的189M,但是运行内存确实是下降了,运行内存基本上在300M以下。

ETC1 PVRTC?

就做了一下android的etc1,ios没有处理。