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

现在用creator 1.9.1进行开发微信小游戏,发现不同设备的微信小游戏状况不同。小米一些机型会发生闪退,锤子的一些机型也会发生闪退,而其他苹果及小米的某些机型就没有问题,运行情况比较稳定,而且我观察过小米闪退机型的cpu使用率跟内存也没有明显的波动,这个是为什么?求助大神与触控团队,当然我这个工程用的性能比较极限(去掉引擎默写模块后,代码才保证在4M内,全部资源都是放在服务器上。)谢谢大家指点交流下。

还有就是锤子手机,按钮的触摸范围会发生偏移。求触控团队关注。

@panda @子龙山人

刚刚查看了下帖子发现触摸范围偏移是可以通过设置解决的。
方法:
竖屏canvas就设置fitWidth为true就行了
横屏canvas就设置fitHeight为true就行了
之后可以考虑上下补图的问题

但是 canvas 的 fitWidth 与 fitHeight 在android中没有发现明显的适配作用。

@panda
微信小游戏触摸层没有随着界面拉伸而拉伸,不知道是不是游戏引擎bug,虽然可以不使用拉伸自己来做界面适配,但是既然有了拉伸,但触摸层没有改变,这个。。。。

creator微信小游戏出游戏包(用creator已出android渠道),发现在一些机型会发生崩溃,但是没有找到收集崩溃日志的办法,如何收集崩溃日志。
还有就是游戏界面拉伸会引起崩溃么?貌似崩溃跟拉伸有关(设计分辨率19201080,崩溃手机分别率21601080与2040*1080,手中机型有限,但是苹果手机都没有崩溃现象,红米note4x也没有崩溃,与设计分辨率相同),而且我已经将屏幕高度拉伸适配关闭。依然发生崩溃。

支持一下,帮你顶。 把标题起的夸张一点,否则难以吸引关注。请自己参考某些帖子的标题,哈哈哈哈:joy:

微信小游戏 android 部分手机home键显示隐藏的时候 竖屏fixwidth = true 适配出错 触摸出现偏移 creator1.9.1这个引擎组能不能解决一下

最终微信小游戏出现机型崩溃的bug,最终找到了原因,是跟系统对于app(这里指微信)的程序运行内存空间管理机制有关,而且这个管理机制并不是所有的系统都有,暂时发现android7的相应小版本貌似有这个管理机制,而安卓6 ios不存在,所以我的游戏会出现红米note4x与苹果手机没有问题,但一些安卓较新手机会出现微信小游戏崩溃。崩溃直接原因是相应的内存报警,但不可检测。而造成这个问题是由于,我自己的游戏体量相对较大(不去掉底层模块的情况下,引擎代码+游戏代码大约4.5M左右),在这种情况下我使用了服务器远端资源方式,使用接口
cc.loader.loadResDir(“资源文件夹”,
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(“加载完成”);
self.loadAnimation();
}
);
进行资源加载,而这种资源加载方式将资源都实例化后存在了内存中,结果游戏运行几个界面后造成了不可检测的内存报警。

当我不在使用资源预加载场景时,在原来崩溃的游戏上基本可以正常运行。当然长时间运行后是否还会造成崩溃,暂时还没有进行测试,下面我接着去解决如何进行远端资源预加载到本地并清掉内存咱不使用的资源。作为一个creator与微信小游戏的新手,确实会遇到一些问题,不怕大家笑话一起来交流下。

游戏启动的加载资源界面一定要注意:
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 适配有咩有 好的方法