多个 cocos creator 项目公用底层代码,如何进行设计?

APP 是大厅+子游戏的形式。子游戏是独立工程,有部分代码功能,如何进行设计可以将公共代码分包到的大厅工程,以降低各子包体积

回答·12
最热
最新
  • 看公司组织架构,能够成立 platform team 的话搭 SDK,顺便把 architecture 的职能拿过去,上层开发最容易; 不行的话各 team 通过 submodule 使用公用代码,要维护 submodule,工作量会增加一些,跨 team 沟通成本更高一点; 再差一点,公用代码剥离出来,拿 U 盘各 team 之间捣腾; 更差一点,各 team 独立实现维护,回头再打嘴炮。 这涉及管理结构,公司文化,评价体系一堆东西,和技术向反倒没大关系
  • 请换 unity 来用就好了
  • 我目前只做过 laya 的 web 端,但原理应该差不多。 先把公用的代码打包成第三方库,暴露出接口,然后在主页面加载之前加载进来,主项目不用有太大改动。关于加载子项目并渲染,下面说。 再来说子项目,在入口文件找到初始化引擎的代码,注释掉,因为主项目里面已经初始化了。 接下来就是互相添加渲染了。 查看引擎源码,渲染都有根节点(Laya.stage),由于并不是直接加载子项目 html,而且加载的子项目的 js 代码,所以主项目中的 canvas 和引擎根节点依然还在执行上下文中,所以当需要渲染子项目时,把主项目的除根节点外的所有节点移出,再加载子项目的 js,就可以实现了。 需要注意的是,Laya2.1.11 版本有个 bug,在移出主项目的渲染子节点,添加子项目时,laya.core.js 库有个提交渲染数据到浏览器时为 null,可以加个判断不为 null 就可以了。 好处:在主项目中可以更好的控制子项目的版本号;资源可通用;子项目只加载一次就可以缓存了。 cocos 论坛也有大厅子游戏的帖子,上面是我自己做法,也许不是很完美,欢迎讨论。
  • 做成三方静态库集成到大厅中,即可以降低大厅包的大小,提高隐密性,安全性也高,
  • 封装 其他层用接口调用不行嘛?(跟 JAVA 应该差不多吧)
  • 以前就是这么设计的 多项目加大厅 共用 core 包
  • 1.公用的部分应该不会被界面直接引用 2.独立运行和调试时,打包的脚本应该不同,打发布包时把公共部分排除掉,native 部分做成 framework,Android 做成包 3.子游戏的加载也要改做一些条件判断,动态加载
  • 环境组成:core+大厅+子项目加载器 在环境中开发打包子项目,大厅服务器更新子包
  • 用 cocos creator 的 asset bubdle 打 ab 包,按需加载就可以了,这个我之前做的课件编辑器就是这么设计的。
  • 分离底包与功能包,用 bundle 方式加载功能包。配置加载数据表即可