微信小游戏 “机型适配” 贴

游戏启动的加载资源界面一定要注意:
cc.loader.loadResDir(“prefabs”,
function (completedCount, totalCount, item) {
let _progress = (completedCount / totalCount).toFixed(2);
if (item && item.uuid && _progress > self.loadBar.progress) {
self.loadBar.progress = _progress;
self.progressLabel.string = self.getValuePercent(_progress, 0);
}
}, function (err, assets) {
cc.log(“加载完成”);
// 加载 startUp
cc.director.loadScene(“StartUp.fire”);

cc.loader.release(assets);

} );
对比上面我发的代码,要注意将加载的资源释放掉,防止过多占用内存。

还有就是 在加载预制体 结束后要将可以释放的资源设置为自动释放,代码如下:
cc.loader.loadRes(‘prefabs/UI/UIDebug’, function (err, prefab) {
// cc.log(err);

        if(!err){

cc.loader.setAutoReleaseRecursively(prefab, true);

}
});

但是要注意并不是所有都能释放,那些引用了公用图集的最好不要随便释放,防止出现图片渲染不出来的问题

在游戏开发中,内存分配是非常重要的一环。建议搭配使用 UILoader 的制作规范和指导方法食用。

不仅是android,iOS也会有杀掉进程的操作。很久以前看是当App占用机子运存达到一半时,系统就会把应用杀掉,也就是你所看到的闪退。不知道现在iOS的机制改成怎么样,但是可以肯定的是,系统必须优先保证自身的运行稳定与流畅。

1赞

谢谢回帖,内存报警杀死程序这个事情,还是了解一些的。但是现在creator最诡异的事情是,同样的代码在出android端游戏,没有经过优化不会出现杀死程序的问题;用creator出微信小游戏,在android6根ios上没有经过优化,基本也没有啥崩溃;用creator出微信小游戏,在anroid7以上的版本,没有经过优化会出现崩溃,而且连我的游戏的新手都不过不了,所以上面的文章我猜测应该是android7以后内存管理机制估计有更改(当然我手上的android6配置小于等于anroid7以上是一定的条件)。当然资源管理优化对游戏品质的提升还是很重要的,我上面就是阐述下自己遇到的问题。

切换场景也会导致内存增长

哎,我也遇到了适配问题。。。。。。现在迁移的信心正在动摇

现在正在解决 资源管理的问题 等我解决了 来把帖子补齐 现在也是 还是依然在anroid7以上微信小游戏出现崩溃

大哥,我用你的方式去 解决全面屏的问题好像没用啊

iphoneX 适配有咩有 好的方法

cc.loader._cache 这里边的资源如何移除?
我使用了 cc.loader.loadResDir 加载预制物体后 想要清除图片资源
使用 cc.loader.releaseResDir(“prefabs”);(变量"prefabs"为resources中预制物体的文件夹)
使用 cc.loader.release(assets); (变量assets为cc.loader.loadResDir完成时回调回来的)
cc.loader.release(“image”);
cc.loader.release(“animation”);
(变量"image","animation"为resources中图片与动画的文件夹)
都不能清除图片资源,还有什么函数能够清除图片资源????
@panda

就是不能完全解决 我这也是在做移植实验,还没有完全解决,解决了,我把帖子完善了。

var deps = cc.loader.getDependsRecursively(assets);
cc.loader.release(deps);
方法也不行,我用的浏览器启动游戏,查看的cc.loader._cache中的资源,看看有没有释放掉,发现还都在里边

@panda 有没有触控的来回个帖子啊

帮顶啊,我现在就是这个问题 导致我无法上线。。 真的头痛。还有一个就是按文档里的方法把资源全扔服务器上面去了。。 但是发现。。 很容易导致按钮点不动 不知道为啥。。

cc.loader.releaseAll(); 使用 这个函数 cc.loader._cache 中的资源清掉,不过后果就是都给清除掉了。你试试哈。
cc.loader.loadResDir(“prefabs”,
function (completedCount, totalCount, item) {
let _progress = (completedCount / totalCount).toFixed(2);
if (item && item.uuid && _progress > self.loadBar.progress) {
self.loadBar.progress = _progress;
self.progressLabel.string = util.getValuePercent(_progress, 0);
}
}, function (err, assets) {
cc.log(“加载完成”);
// 加载 startUp
cc.director.loadScene(“StartUp.fire”);
cc.loader.releaseAll();
util.releaseNodeRes();
}
);
util.releaseNodeRes(); 这个是写的一个cc.loader._cache 分析方法 没什么实际用处。

cc.loader.releaseAll() 这个函数靠谱哈 刚刚我在所有的跳场景的地方都给加上了这个函数 感觉还行 没有在发生崩溃的现象 就是有的图片黑了 黑了应该是跳转过去没有加载出来 或是 什么地方我释放多了 但是感觉还是靠谱的 一会我去查查代码 要是能查到就解决释放过多的问题 要是不能解决 我就把公用的图集 在cc.loader.releaseAll() 后重新再加载一次。你试试我的思路。

兄弟 你看看 是不是点击按钮下方 按钮触摸有反应 要是的话,请参考这条。

兄弟,你是怎么擦好看cpu使用率跟内存的?我也有些手机小游戏会闪退.

微信小游戏是有内存报警强行闪退的。我就遇到过,提示该小程序可能导致微信相应过慢而被终止。正在想解决方案。

兄弟 我一开始查看cup使用率跟内存用的是微信小游戏在微信运行后开启调试模式 能开启数据面板监控 但是不知道怎么 感觉那个数值的准确率不太高。后来,我查看内存使用的 查看的是 cc.loader._cache 这个变量中的情况 你可以将这个变量写在场景切换或是你需要查看的位置 做个统一的函数 加个断点调试 看看这个值