cocos creator微信版小游戏有些手机不显示图像、有时闪退的问题

  • Creator 版本:2.0.9

  • 目标平台:微信小游戏 (iOS / Android )
    微信开发者工具:Stable v1.02.1904090

  • 详细报错信息,包含调用堆栈:
    主要操作步骤是:
    new Uint8Array创建图像数据,
    texture2D.initWithData()创建texture,
    sprite.spriteFrame.setTexture()设置图像到node。

有两个问题:
(1)微信版部分机型不能显示图像,有的还导致微信闪退。具体机型见下面描述。非微信版基本都正常显示图像。
iPhone7P、坚果pro2(安卓7.1.1)微信版不能显示图像。 iPhone6P(ios 12.2)微信版 不能显示图像、大尺寸图像闪退。

(2)有些图像第一次没有显示,第二次以后才开始显示。比如demo中尺寸512的图像。
多种环境下都会出现,比如:Creator测试环境(localhost:7456),安卓4.4.2等。

  • 重现方式:
    demo程序:testIOS.zip (2.3 MB)

  • 之前哪个版本是正常的 :Creator1.9.3版本同样问题,未测试其它版本

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :无

  • 出现概率:始终出现

  • 额外线索:

请问是什么原因,有什么办法解决(或规避)?谢谢!

遇到同样的问题,求引擎组看下

@panda
@zzf_2025
@huanxinyin
@jare

如果打包成原生Android版本,就会好一点,估计和内存性能有关

遇到同样问题的路过。

分享我之前的处理方法:
使用cc.Graphics组件手动绘制图片,这个方法虽然可以实现,但是也有弊端。
drawcall数量不会增加,但是顶点数会暴增。

希望官方可以处理下这个bug。
(PS:这个问题貌似还与账号类型有关,安卓的账号在iphone上登陆是可以正常显示的。)

还有cc.Texture2D可以改用cc.RenderTexture类型,
调用下面两个方法创建贴图:
renderTexture.initWithSize()
renderTexture.initWithData()
这样创建的贴图,除iphone以外,我这测试都是可以正常显示的。

Graphics好像没有画图片的方法,主要是我的数据来源是UNINT8Array(一张图),然后显示到界面上。

你把Graphics当做画笔,然后用UNINT8Array每个点的颜色信息,一个像素一个像素画是可以画出来的。不过还是不建议用这个方法,这个方法应该会造成卡顿

@panda 引擎大佬麻烦看下这个问题

Creator 2.0.4 也有差不多的问题,不过是在原生平台部分Android机器上,在游戏中显示用户的微信头像。换个微信号(换个头像地址)就又能显示出来,希望大佬们看下