微信小游戏

创建于:2017-12-28

创建人: MotionWalk Studios

75 信息 778 成员
关于微信小游戏的内容

微信小游戏接入和文件管理

jiajia724 2018-03-07

今天微信小游戏的接入工作终于告一段落,写篇文章来备忘,同时提醒下遇到同样问题的同学。

先简单列举下在接入工作中遇到的问题:

1.只提供一个主canvas,其他创建出来的canvas都是离屏的。

2.不支持dom树。

3.不支持xml的解析

4.不支持 URL.createObjectURL 的形式创建图片

5.模拟器跟微信的表现不一致

6.文件管理系统跟游戏的对接

由于我们项目是个完全自研的引擎,很多方面当时在浏览器环境下正常运行,但是微信限制太多,改动很大。

1.由于项目以前是3d和2d两层canvas在dom树里混合,这里不得不去把2d用贴图形式 渲染到3d,当然这里提升空间很大,去做基于webgl的ui渲染,各大引擎已经实现。

2.问题同1,我们还有很多基于dom树的控件 不得不去移到渲染列表

3.暂时没有解决方案,除非自己写文本解析 来实现xml的解析。

4.这个应该是微信基于自己的安全考虑,想想如果你能把二进制转换成图片,你都能来干些什么,如何审查。

5.这里不一致的表现很多,遇到已微信上的实际内容为准 所以多用微信测试,千万别以为在模拟器里好了,微信就好了。

        请一切效果以在微信里表现为准

        请一切效果以在微信里表现为准

        请一切效果以在微信里表现为准

6.这是我这次发帖的重点,详细讲下这里遇到的坑

    微信提供了好几个文件域,1.代码包文件 2.本地文件 3.临时缓存文件 4.受信任的安全域(游戏cdn)。

    由于代码包文件4m的限制,用起来真的捉襟见肘,一个项目代码文件轻松达标,所以这里不考虑放入资源文件,还有这里的文件改动必须要重新提审。

    所以现在项目的资源策略是,去cdn加载资源,writeFile写到本地,通过readFile返回本地文件,这里需要特别注意的地方就是因为不提供二进制序列化图片的方法,所以图片要以image.src的方式加载。

    这里还遇到一个坑就是在模拟器里,写在本地的所有文件都能通过 XMLHttpRequest的方式请求得到,但是在微信里,只有图片能通过image.src的方式加载,其他资源无法通过XMLHttpRequest的请求得到,会报加载异常。请通过readFile读取二进制文件使用。

另外微信模拟了浏览器的缓存

另外微信模拟了浏览器的缓存

另外微信模拟了浏览器的缓存

所以当你加载到的资源跟资源服上的不一致的时候 请加随机数

祝大家接入愉快 另外微信小游戏群 谁来拉我进去




近期喜欢的会员

 
eastecho 2018-03-07

请提供微信号给我,网站私信就可以。

 
jiajia724 2018-03-07

eastecho 私信给你了

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册