一、Cocos技术派|3D小游戏《快上车》技术分享
3D场景地图和关卡编辑方式?
关卡编辑,我们修改了多次方案。最初的想法是一个场景对应一个关卡,然后关卡编辑人员直接通过 Cocos Creator 3D 进行关卡编辑,直接运行便可看到效果。
考虑到游戏中有太多的公用元素,如灯光,UI,以及车辆管理等公用节点,我们将地图修改为一个个 Prefab,然后使用通用场景,启动时直接实例化该地图预制体。
后续发现随着关卡复杂度的提升,直接使用预制体,包体将大幅度增大,因为 Prefab 会记录大量的节点关系及地图所不需要的信息。
于是,我们决定增加一个地图导出功能,把原有的 Prefab 下的信息进行解析,解析出有几栋房子,几棵树,几条路,然后分别用的是哪些模型,以及对应的坐标、旋转、缩放等信息进行记录,并将这些信息进行压缩,最后持久化自定义格式的文件中,然后再加载地图时根据动态去创建地图元素。
这样的实现方式,让关卡编辑人员可视化编辑的同时,又不用额外开发关卡编辑器,也解决了包大小的问题。
关于多个关卡类型的游戏
Q:对于多关卡的游戏,是加载多个场景好呢?还是在同一个场景下加载多个预制体好呢?
A:都不好,最好就是做好关卡,再把关卡用到的关键数据保存为json , 如果用大量 scene 或者 prefab 都会导致json 文件变大,加载变慢
cocos creator里面的加了1000多个prefab 关卡, 每个prefab估计有300kb,会不会影响包体的最后大小?
官方的预制体使用的是json格式,里面包含了很多信息,还是蛮占空间的
我之前一个游戏,就是预制太多,导致包体过大,后来全部改为导致自己的数据格式,包体才降下去
网友评论